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

Group outer collection based on a property value of nested (inner) collection

我有一个集合 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 值对所有集合项进行分组。

不太确定你想要什么。

如果你有这个

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));

还有其他选项,但不知道您想要什么,我无法提供更具体的信息。

从概念上讲,尝试绕过一个人的头脑是一件很奇怪的事情,但这会做你想做的事:

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