考虑以下对象列表:
Obj1 - X = 1, Y = 1
Obj2 - X = 1, Y = 1
Obj3 - X = 1, Y = 1
Obj4 - X = 2, Y = 1
Obj5 - X = 2, Y = 1
我想实现这个目标(两个具有相同对象的列表):
L1 - Obj1, Obj2, Obj3
L2 - Obj4, Obj5
我做了这个lambda表达式,但它不起作用:
var grouped = ListOfItens.GroupBy(x => ListOfItens.Where(y => new { y.X, y.Y} == new { x.X, x.Y }));
我很确定问题出现在我的小组中,但我无法弄清楚它是什么!
谢谢!
答案 0 :(得分:2)
您必须为IEqualityComparer<YourClass>
的重载提供自定义Enumerable.GroupBy
,在该类中覆盖Equals
+ GetHashCode
或使用匿名类型{{1如果属性&#39;类型覆盖GroupBy
+ Equals
(GetHashCode
的情况)。
假设您要创建System.Int32
:
List<List<YourClass>>
答案 1 :(得分:0)
您必须以这种方式使用GroupBy
var grouped = ListOfItens.GroupBy(y => new { y.X, y.Y});