按两个标准对C#进行分组

时间:2013-02-09 10:11:12

标签: c# linq list

我有一个清单

Class =>       Second      Third   Second  Fourth  Fifth  Second

Position =>     2           3       2       5        1     3 

我想创建具有Same类和相同Positon

的新列表

即新名单

Class  =>      Second       Second

Postion =>       2             2


Class  =>         Second

Position =>         3


Class  =>          Third

Position =>          3

等等

我可以在父列表上使用muliple GroupBy来生成这些不同的列表或首先我应该 GroupBy“Class”然后通过“Position”?

3 个答案:

答案 0 :(得分:6)

...至于如何你一次分两件事:

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

答案 1 :(得分:5)

立即按positionclass分组。一个GroupBy()

例如:

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

答案 2 :(得分:3)

您可以使用匿名类型进行分组,然后使用GroupBy任意数量的属性。 可能类似于以下

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

如果您可以使用匿名类型(例如,如果您需要从当前方法返回分组结果),您还可以尝试使用元组

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