基于嵌套(内部)集合的属性值对外部集合进行分组

时间:2015-04-15 01:57:12

标签: c# linq group-by

我有一个集合A,其内部有一个集合B作为其属性之一。我想根据内部集合的属性值对外部集合A的所有项进行分组。

class A
{
    string A;
    List<B> NestedColl;
}

class B
{
    string key;
    string name;
    int id;
}

现在我有了

List<A> localCollection = new List<A>();

我想根据嵌套集合中Id的值对所有集合项进行分组。

2 个答案:

答案 0 :(得分:4)

从概念上讲,这是一个奇怪的事情,试图包裹一个人的头,但这将做你想要的:

localCollection
.SelectMany(a => a.NestedColl.Select(b => new { A = a, Id = b.id}))
.GroupBy(x => x.Id);

答案 1 :(得分:0)

不完全确定你想要什么。

如果你有这个

class A
{
    string A;
    B NestedB;
}

class B
{
    string key;
    string name;
    int id;
}

你可以这样做

localCollection.GroupBy(a=>a.NestedB.id);

但是你有一个嵌套的集合,所以每个B可以有一个不同的id,你会分组?

你可以像第一个一样使用第一个

localCollection.GroupBy(a=>a.NestedColl.First().id);

或者你可以选择像这样的第一大

localCollection.GroupBy(a=>a.NestedColl.Max(b=>b.id));

还有其他选择,但不知道你想要什么,我可以更具体。