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

时间:2013-11-14 05:39:50

标签: c# linq

我们可以使用以下代码

从列表中提取不同的值集
List<Person> distinctPeople = allPeople
  .GroupBy(p => new {p.PersonId, p.FavoriteColor} )
  .Select(g => g.First())
  .ToList();

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

3 个答案:

答案 0 :(得分:1)

你可以选择你想要的新课程:

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

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

答案 1 :(得分: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})

答案 2 :(得分:1)

您可以使用自定义IEqualityComparer的{​​{3}}扩展名,例如

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