我们可以使用以下代码
从列表中提取不同的值集List<Person> distinctPeople = allPeople
.GroupBy(p => new {p.PersonId, p.FavoriteColor} )
.Select(g => g.First())
.ToList();
假设有人有PersonId,FavoriteColor,年龄,地址等.....我的要求是我想得到一个单独的列表,其中应该包含不同的过滤数据,例如PersonId,FavoriteColor而不是其他。命令是什么,假设我可以创建一个包含PersonId,仅仅是FavoriteColor的小类
答案 0 :(得分:1)
你可以选择你想要的新课程:
.Select(g => new {g.PersonId, g.FavoriteColor})
对象将仅包含您选择的内容,在本例中为PersonId
和FavoriteColor
。
答案 1 :(得分:1)
List<Person> distinctPeople = allPeople
.GroupBy(p => new {p.PersonId, p.FavoriteColor} )
.Select(g => new {g.First().PersonId, g.First().FavouriteColor})
.ToList();
<强>更新强>
如果您有自己的班级说yourClass
,其中包含属性PersonalId
和FavouriteColor
,只需将选择部分更改为
.Select(g => new YourClass{PersonalId = g.First().PersonId, FavouriteColor = g.First().FavouriteColor})
答案 2 :(得分:1)
您可以使用自定义IEqualityComparer
的{{3}}扩展名,例如
List<Person> distinctPeople = allPeople
.Distinct(new CustomEqualityComparer())
.Select(p=> new{ p.PersonId, p.FavoriteColor})
.ToList();