首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将GroupBy与ICollections结合使用?

如何将GroupBy与ICollections结合使用?
EN

Stack Overflow用户
提问于 2015-05-15 07:35:58
回答 1查看 82关注 0票数 0

我使用GroupBy对对象进行分组,例如:

代码语言:javascript
复制
var categories=
    tovRDb.MyObjects.AsEnumerable().Where(t => myHashSet.Contains(t.Id))
                      .GroupBy(t => t.Specialization, t => t,
                               (key, g) => new {Name = key.Name, CategoryItems = g.ToList()})
                      .OrderBy(t => string.IsNullOrEmpty(t.Name))
                      .ThenBy(t => t.Name)
                      .ToList();

效果很好。

但是现在我想对特定化为ICollection<>的对象进行分组。

例如:

代码语言:javascript
复制
MyObject1: "Berlay's Meat"
Specializations{Chicken, Pork, Beef}

MyObject2: "Wonday's Chickery"
Specializations{Chicken}


MyObject3: "Rooki's Meat"
Specializations{Chicken, Pork}

以及小组之后:

代码语言:javascript
复制
Pork{MyObject1: "Berlay's Meat",MyObject3: "Rooki's Meat"}
Beef{MyObject1: "Berlay's Meat"}
Chicken{MyObject1: "Berlay's Meat",MyObject2: "Wonday's Chickery", MyObject3: "Rooki's Meat"}

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-15 07:46:57

使用categories作为:

代码语言:javascript
复制
var categories = tovRDb.MyObjects.AsEnumerable().Where(t => myHashSet.Contains(t.Id));

var catsGrouped = categories.SelectMany(
    x => x.Specializations, // Specializations is an IEnumerable<Specialization>
    (x, y) => new
    {
        Category = x,
        Specialization = y,
    }).GroupBy(x => x.Specialization, x => x.Category)
    .ToArray();

我使用SelectMany来“乘”每一个类别,用于其专门化..。然后我用Specialization对结果进行了重组。结果是一个IGrouping<Specialization, MyObject>[]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30254042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档