我的课:
public class Foo
{
public int A { get; set; }
public List<Bar> Bars { get; set; }
}
我有IEnumerable<Foo>
。我想List<Foo>
按 A 分组,并获得 Bars 列表,其中包含 Bars 中的所有元素进行分组。
所以最终的 Foo.Bars 应该包含组中 Bar 的所有元素
linq可以吗?
var result = foos.GroupBy(f => f.A)
.SelectMany(grp => grp.Select(f => f.Bars));
正如 Rawling 所提到的,这不会返回 a IEnumerable<Foo>
,所以试试这个:
IEnumerable<Foo> result =
foos.GroupBy(f => f.A)
.Select(grp => new Foo() {
A = grp.Key,
Bars = grp.SelectMany(ff => ff.Bars).Distinct().ToList()
});
我不确定你是否想要一个不同的列表Bars
。请注意,您可能需要覆盖Equals
and GetHashCode
in class Bar
。