我有一个对象列表,例如
class Hotel
{
public int ID {get; set;}
public string description {get; set;}
}
我有一个List<Hotel>
,其中有几个项目。当项的description
属性相同时,用于过滤列表的LINQ是什么?因此,请给我列出所有描述相同的酒店。
答案 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);