2015-12-09 23 views
0

考慮對象名單如下:獲取列表清單,相同的複雜對象

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 

我這樣做拉姆達表達,但它不工作:

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

我敢肯定,這個問題是在我的集團通過的條件,但我想不通了解它是什麼!

謝謝!

+2

'的GroupBy(X =>新{x.x中,X.Y});'還有什麼是預期的輸出?這將只對數據進行分組,然後您將不得不相應地使用「選擇」進行投影。 –

+1

你能說你想要有相同的對象列表嗎? 'GroupBy'會摺疊你的相同對象 –

+0

你能用文字描述你的分組標準是什麼嗎? –

回答

2

你要麼必須爲Enumerable.GroupBy過載提供一個自定義IEqualityComparer<YourClass>在課堂上使用GroupBy,覆蓋Equals + GetHashCode或使用匿名類型,如果其運作GroupBy屬性的類型覆蓋Equals + GetHashCode(這是System.Int32的情況)。

假設你想創建一個List<List<YourClass>>

List<List<YourClass>> grouped = ListOfItens 
    .GroupBy(x => new {x.X, x.Y}) 
    .Select(g => g.ToList()) 
    .ToList(); 
0

必須以這種方式

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