所以我正在研究一个比较2个不同自定义对象列表的问题.我已经覆盖了object.Equals()并拥有以下类:
class Item
{
int ID;
string Name;
DayOfWeek[] days;
public overide Equals(object obj)
{
if(obj.GetType == GetType()
return this.Equals(obj)
return false;
}
public Equals(Item rhs)
{
if(this.ID == rhs.ID)
if(this.Name == rhs.Name)
if (this.days.OrderBy(i => i).SequenceEqual(rhs.days.OrderBy(i => i)))
return true;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码时,我没有得到预期的结果:
List<Item> list1 = GetNewListFromDB();
List<Item> list2 = GetNewListFromDB();
//This is in a loop looking for changes to a table
//there is a delay between the list generation in the actual code
foreach(Item i in …Run Code Online (Sandbox Code Playgroud) 我正在开发组合的编辑/新项目页面,想要检查项目列表,然后调用HTML.Action()默认值,.Count > 0或者循环调用相同的列表HTML.Action()以返回具有不同数据的相同部分视图。
到目前为止不起作用的代码:
@{
var list = @Model.MyList.FindAll(x=>x.somval == someotherval);
if (list.Count == 0)
{
@Html.Action("MyFunc", "MyController", new { MyData = Default.Value });
}
else
{
foreach(var Item in @Model.MyList)
{
@Html.Action("MyFunc", "MyController", new { MyData = Item.Data });
}
}
}
Run Code Online (Sandbox Code Playgroud)
}问题是第一个的关闭@Html.Action()导致编译错误(预期为“,”)。一定有一些简单的东西我错过了,但我似乎无法通过谷歌搜索找到问题。
编辑添加完整代码。
编辑:感谢 Ashley Medway 的回答(在我编辑以包含完整代码之前发布),我现在有以下正在运行的内容
@{var list = @Model.MyList.FindAll(x=>x.somval == someotherval); }
@if (list.Count == 0)
{
Html.Action("MyFunc", "MyController", new { MyData = Default.Value });
}
else …Run Code Online (Sandbox Code Playgroud) 我正在开发一个新项目,并且有一段代码,我不想实际处理异常,但要确保关闭任何数据库连接.我想知道哪个是处理这个问题的最佳方法.我看到两种方式,但不确定哪种更清楚:
SqlConnection con = new SqlConnection(connectionstring);
try
{
con.open()
//DoStuff
}
catch(Exception)
{
throw;
}
finally
{
con.close();
con.dispose();
}
Run Code Online (Sandbox Code Playgroud)
要么
try
{
con.open()
//DoStuff
}
finally
{
con.close();
con.dispose();
}
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,我将异常传递给要处理的调用代码,但仍然清理连接.