leo*_*ora 2 c# linq collections
我有以下代码似乎没有工作:
上下文:
我有两个对象列表:
*listOne有100条记录
*listTwo有70条记录
其中许多具有相同的Id属性(在两个列表中);
var listOneOnlyItems = listOne.Except(listTwo, new ItemComparer ());
Run Code Online (Sandbox Code Playgroud)
这是比较器
public class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{
if (x.Id == y.Id)
return true;
return false;
}
public int GetHashCode(Item obj)
{
return obj.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
在我运行此代码并查看结果之后
listOneOnlyItems
Run Code Online (Sandbox Code Playgroud)
仍然有100条记录(应该只有30条记录).谁能帮我?
也跑,跑
IEnumerable<Item> sharedItems = listOne.Intersect(listTwo, new ItemComparer());
Run Code Online (Sandbox Code Playgroud)
在sharedItems集合中返回零reesults
public int GetHashCode(Item obj)
{
return obj.Id.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
至少值得检查 - IIRC GetHashCode()在相等之前首先进行测试,如果它们没有相同的散列,则不会费心检查相等性.我不确定会发生什么obj.GetHashCode()
- 这取决于你在Item
课堂上实施的内容.
归档时间: |
|
查看次数: |
1838 次 |
最近记录: |