2013-02-09 35 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))