1

我有一个清单

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" ?

4

3 回答 3

6

...以及如何同时按两件事分组:

var groupedByTwoThingsAtOnce = myList
    .GroupBy(i => new { Class = i.Class, Position = i.Position });
于 2013-02-09T10:17:13.813 回答
5

position一次分组class。一GroupBy()

例如:

var groupedByTwoThingsAtOnce = myList
   .GroupBy(i => new { Class = i.Class, Position = i.Position });
于 2013-02-09T10:14:12.727 回答
3

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

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

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

.GroupBy(item => new Tuple<string, int>(item.Class, item.Position))
于 2013-02-09T10:20:23.773 回答