C#LINQ - Union()Group() - 结果

时间:2012-04-18 12:12:54

标签: c# linq union grouping

我有一个对象列表,其中每个对象都有一个“名称”和其他不同的东西。我想过滤掉那个列表中没有唯一名称的对象。

是否有一个LINQ语句,我可以“联合()”所有结果组,只返回我的对象​​的IEnumerable?

IEnumerable<MyObject> Results = (from x in Objects 
                                 group x by x.Name into g
                                 where g.Count() > 1
                                 select g)
                                 .COMBINE_OR_WHATEVER();

谢谢!

2 个答案:

答案 0 :(得分:9)

是的,有。您可以使用SelectMany

IEnumerable<MyObject> Results = (from x in Objects 
                                 group x by x.Name into g
                                 where g.Count() > 1
                                 select g)
                                 .SelectMany(x => x);

答案 1 :(得分:1)

我认为您只想要具有唯一名称的对象(“我想过滤掉那些没有该列表中唯一名称的对象“):

var result = Objects.GroupBy(o => o.Name)
            .Where(grp => grp.Count() == 1)
            .SelectMany(grp => grp);