2013-02-09 68 views
1

我有一個列表組的列表由兩個標準C#

Class =>  Second  Third Second Fourth Fifth Second 

Position =>  2   3  2  5  1  3 

我想創建具有相同的類新的列表,以及同一當前位置

即新的列表

Class =>  Second  Second 

Postion =>  2    2 


Class =>   Second 

Position =>   3 


Class =>   Third 

Position =>   3 

等等

我可以在父列表上使用多組GroupBy來生成這些不同的列表或首先我應該 GroupBy「Class」,然後是「Position」?

回答

5

分組由positionclass一次。一個GroupBy()

例如:

var groupedByTwoThingsAtOnce = myList 
    .GroupBy(i => new { Class = i.Class, Position = i.Position }); 
6

...併爲如何你組由兩件事情在一次:

var groupedByTwoThingsAtOnce = myList 
    .GroupBy(i => new { Class = i.Class, Position = i.Position }); 
3

你可以使用匿名類型分組,然後的GroupBy任何數量的屬性。 可能是類似以下

.GroupBy(item => new {ClassGroup = item.Class, PositionGroup = item.Position}) 

如果你可以使用匿名類型(例如,如果你需要返回分組結果出來當前方法的),你也可以嘗試使用一個元組

.GroupBy(item => new Tuple<string, int>(item.Class, item.Position))