6

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

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

喜欢

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

谢谢!

4

2 回答 2

11

就在这里。您可以使用SelectMany.

IEnumerable<MyObject> Results = (from x in Objects 
                                 group x by x.Name into g
                                 where g.Count() > 1
                                 select g)
                                 .SelectMany(x => x);
于 2012-04-18T12:15:37.293 回答
1

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

var result = Objects.GroupBy(o => o.Name)
            .Where(grp => grp.Count() == 1)
            .SelectMany(grp => grp); 
于 2012-04-18T12:26:32.367 回答