0

我们可以使用以下代码从列表中提取不同的值集

List<Person> distinctPeople = allPeople
  .GroupBy(p => new {p.PersonId, p.FavoriteColor} )
  .Select(g => g.First())
  .ToList();

假设人有 PersonId、FavoriteColor、年龄、地址等......我的要求是我想获得一个单独的列表,其中应该只包含不同的过滤器数据,例如 PersonId、FavoriteColor 而不是其他。那是什么命令,假设我可以创建一个只包含 PersonId,FavoriteColor 的小类

4

3 回答 3

1

您可以像这样在新课程中选择您想要的内容:

 .Select(g =>  new {g.PersonId, g.FavoriteColor})

在这种情况下,对象将仅包括您选择的内容,PersonId并且FavoriteColor.

于 2013-11-14T05:43:08.107 回答
1
  List<Person> distinctPeople = allPeople
  .GroupBy(p => new {p.PersonId, p.FavoriteColor} )
  .Select(g => new {g.First().PersonId, g.First().FavouriteColor})
  .ToList();

更新

如果你有自己的类说yourClass属性PersonalIdFavouriteColor,只需将选择部分更改为

.Select(g => new YourClass{PersonalId = g.First().PersonId, FavouriteColor = g.First().FavouriteColor})
于 2013-11-14T05:43:15.587 回答
1

您可以将Distinct扩展与 custom 一起使用IEqualityComparer,例如

List<Person> distinctPeople = allPeople
    .Distinct(new CustomEqualityComparer())
    .Select(p=> new{ p.PersonId, p.FavoriteColor})
    .ToList();
于 2013-11-14T05:45:23.523 回答