按条件分组列表以创建列表列表

时间:2019-01-11 11:47:21

标签: c# list group-by

我有一个List<type1> listOfObjectsstatic方法

bool CheckIfObjectsAreEquivalent(type1 obj1, type1 obj2)

我想通过等效标准对列表进行分组,即让List<List<type1>> result其中每个列表由对象组成根据{{​​1}} 等价

另一个重要的方面是,我不预先知道此分组将产生多少个不同的列表,因为所有对象可能相等,也可能不相等,也可能不存在任何数目的等效组。对象CheckIfObjectsAreEquivalent的初始列表可以包含许多对象,要查看其中两个对象是否相等,必须使用listOfObjects

我一直在使用CheckIfObjectsAreEquivalent.Where寻找不同的选项,但我无法使其正常工作...

有什么想法吗? 预先感谢

1 个答案:

答案 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; 
  }
}