我的课程:
public class Foo
{
public int A { get; set; }
public List<Bar> Bars { get; set; }
}
我有IEnumerable<Foo>
。我希望通过A获得List<Foo>
分组,并获得Bars列表,其中包含Bars的所有元素。
所以最后的Foo.Bars应该包含组
中Bar的所有元素linq可以吗?
答案 0 :(得分:5)
var result = foos.GroupBy(f => f.A)
.SelectMany(grp => grp.Select(f => f.Bars));
正如罗林所提到的,这不是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
中的GetHashCode
和Bar
。