当列表具有相同的属性时,如何使用LINQ过滤列表?

时间:2018-07-27 23:47:25

标签: c# linq collections

我有一个对象列表,例如

class Hotel
{
     public int ID {get; set;}
     public string description {get; set;}
}

我有一个List<Hotel>,其中有几个项目。当项的description属性相同时,用于过滤列表的LINQ是什么?因此,请给我列出所有描述相同的酒店。

1 个答案:

答案 0 :(得分:1)

按说明进行分组,并过滤​​以保留多于一项的分组:

var resultSet = source.GroupBy(x => x.description)
                      .Where(g => g.Count() > 1);

resultSet类型为IEnumerable<IGrouping<string, Hotel>>,其中每个IGrouping<string, Hotel>代表具有相同描述的Hotel对象的集合。

如果出于任何原因希望合并每个Hotel中的IGrouping个对象的集合,则可以使用SelectMany折叠嵌套序列。

var resultSet = source.GroupBy(x => x.description)
                      .Where(g => g.Count() > 1)
                      .SelectMany(x => x);