通过对多个属性进行分组来创建对象列表

时间:2013-05-13 20:06:03

标签: c# linq collections

我有List<T>其中T是自定义对象Cow。现在我使用以下代码根据Color分割该列表。

cowGroups = from x in cows
            group x by x.Color into y
            select y.ToList().ToList();

然后我选择cowGroups并在其上运行foreach,为每个Cow执行一系列操作。此列表实际上显示为IEnumerable<List<Cow>>

我要做的是在我的初始List<Cow>上进行双重分组,以便根据颜色和大小进行分组。结果仍应为IEnumerable<List<Cow>>,但每个List<Cow>都将根据颜色和大小的组合而制作。

一位同事建议使用ToLookup方法,但会返回一个键/值对的列表,而我似乎无法对该对的值部分做任何事情。

我想我正在寻找直接转到列表集合的方法,或者将ToLookup方法的结果转换为列表集合。

1 个答案:

答案 0 :(得分:5)

您可以按包含两个属性的类进行分组:

group x by new { x.Color, x.Size } into y