我的课:
public class Foo
{
public int A { get; set; }
public List<Bar> Bars { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有IEnumerable<Foo>.我想List<Foo>通过A进行分组,并获得Bars列表,其中包含Bars for groups中的所有元素.
所以最终的Foo.Bars应该包含Bar的所有元素
linq有可能吗?
var result = foos.GroupBy(f => f.A)
.SelectMany(grp => grp.Select(f => f.Bars));
Run Code Online (Sandbox Code Playgroud)
正如罗林所提到的,这不是一个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()
});
Run Code Online (Sandbox Code Playgroud)
我不确定你是否想要一份明确的清单Bars.请注意,您可能需要覆盖Equals 并GetHashCode在课堂上Bar.