Linq Merge列表

And*_*kov 2 c# linq

我的课:

    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有可能吗?

Tim*_*ter 5

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.请注意,您可能需要覆盖EqualsGetHashCode在课堂上Bar.