我有一个List<type1> listOfObjects
和static
方法
bool CheckIfObjectsAreEquivalent(type1 obj1, type1 obj2)
。
我想通过等效标准对列表进行分组,即让List<List<type1>> result
其中每个列表由对象组成根据{{1}} 等价。
另一个重要的方面是,我不预先知道此分组将产生多少个不同的列表,因为所有对象可能相等,也可能不相等,也可能不存在任何数目的等效组。对象CheckIfObjectsAreEquivalent
的初始列表可以包含许多对象,要查看其中两个对象是否相等,必须使用listOfObjects
。
我一直在使用CheckIfObjectsAreEquivalent
和.Where
寻找不同的选项,但我无法使其正常工作...
有什么想法吗? 预先感谢
答案 0 :(得分:2)
您可以实现select p.*
from products p
where not exists (select 1 from orders o where o.product = p.product);
接口,然后在IEqualityComparer<type1>
中使用实现:
GroupBy
然后您可以输入:
public sealed class MyEqualityComparer : IEqualityComparer<type1> {
public bool Equals(type1 x, type1 y) {
// Your method here
return MyClass.CheckIfObjectsAreEquivalent(x, y);
}
public int GetHashCode(type1 obj) {
//TODO: you have to implement HashCode as well
// return 0; is the WORST possible implementation
// However the code will do for ANY type (type1)
return 0;
}
}