提取特定属性 Linq 上的列表值

  • 本文关键字:列表 Linq 属性 提取 c# linq
  • 更新时间 :
  • 英文 :


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

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

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

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

更新

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

.Select(g => new YourClass{PersonalId = g.First().PersonId, FavouriteColor = g.First().FavouriteColor})

你可以像这样选择你想要的新类:

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

对象将仅包含您选择的内容,在本例中为 PersonIdFavoriteColor

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

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

最新更新