为了账号安全,请及时绑定邮箱和手机立即绑定

Linq在特定属性上的DISTIVE()

Linq在特定属性上的DISTIVE()

LEATH 2019-06-01 10:26:58
Linq在特定属性上的DISTIVE()我正在玩LINQ来学习它,但是当我没有一个简单的列表时,我想不出如何使用DISTION(一个简单的整数列表非常容易,这不是问题)。如果我想用什么独树一帜的对象列表上一或更多对象的属性?示例:如果对象是Person,有财产Id..我怎么才能让所有的人Distinct对他们的财产Id那个物体?Person1: Id=1, Name="Test1"Person2: Id=1, Name="Test1"Person3: Id=2, Name="Test2"我怎么才能得到个人1和个人3呢?这有可能吗?如果LINQ是不可能的,那么有一个列表的最好方法是Person取决于.NET 3.5中的某些属性?
查看完整描述

4 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

如果我想获得一个基于更多财产?

简单!你想把他们分组,从小组中选出一个赢家。

List<Person> distinctPeople = allPeople  .GroupBy(p => p.PersonId)
  .Select(g => g.First())
  .ToList();

如果您想在多个属性上定义组,下面是如何:

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


查看完整回答
反对 回复 2019-06-01
?
皈依舞

TA贡献1851条经验 获得超3个赞

用途:

List<Person> pList = new List<Person>();/* Fill list */var result = pList.Where(p => p.Name != null).GroupBy(p => p.Id).Select(grp => grp.FirstOrDefault());

这个where帮助您过滤条目(可能更复杂)和groupbyselect执行不同的功能。


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信