获取具有相同复杂对象的列表列表

时间:2015-12-09 12:46:08

标签: c# .net linq lambda

考虑以下对象列表:

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 }));

我很确定问题出现在我的小组中,但我无法弄清楚它是什么!

谢谢!

2 个答案:

答案 0 :(得分:2)

您必须为IEqualityComparer<YourClass>的重载提供自定义Enumerable.GroupBy,在该类中覆盖Equals + GetHashCode或使用匿名类型{{1如果属性&#39;类型覆盖GroupBy + EqualsGetHashCode的情况)。

假设您要创建System.Int32

List<List<YourClass>>

答案 1 :(得分:0)

您必须以这种方式使用GroupBy

var grouped = ListOfItens.GroupBy(y => new { y.X, y.Y});