根据嵌套(内部)集合的 属性 值对外部集合进行分组
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);
我有一个集合 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);