【问题标题】:Create a list of objects by grouping on multiple properties通过对多个属性进行分组来创建对象列表
【发布时间】:2013-05-13 20:06:02
【问题描述】:

我有一个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 方法的结果转换为列表集合。

【问题讨论】:

    标签: c# linq collections


    【解决方案1】:

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

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

    【讨论】:

    • 天哪……我现在觉得自己好蠢。我尝试过的其中一件事是 `cows.GroupBy(new {x.Color, x.Size}) 但它产生了与 ToLookup 类似的结构。 编辑:我应该补充一点,这正是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多