猿问

Linq在特定属性上的DISTIVE()

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中的某些属性?


LEATH
浏览 476回答 4
4回答

蛊毒传说

如果我想获得一个基于一或更多财产?简单!你想把他们分组,从小组中选出一个赢家。List<Person>&nbsp;distinctPeople&nbsp;=&nbsp;allPeople&nbsp;&nbsp;.GroupBy(p&nbsp;=>&nbsp;p.PersonId) &nbsp;&nbsp;.Select(g&nbsp;=>&nbsp;g.First()) &nbsp;&nbsp;.ToList();如果您想在多个属性上定义组,下面是如何:List<Person>&nbsp;distinctPeople&nbsp;=&nbsp;allPeople&nbsp;&nbsp;.GroupBy(p&nbsp;=>&nbsp;new&nbsp;{p.PersonId,&nbsp;p.FavoriteColor}&nbsp;) &nbsp;&nbsp;.Select(g&nbsp;=>&nbsp;g.First()) &nbsp;&nbsp;.ToList();

皈依舞

用途:List<Person>&nbsp;pList&nbsp;=&nbsp;new&nbsp;List<Person>();/*&nbsp;Fill&nbsp;list&nbsp;*/var&nbsp;result&nbsp;=&nbsp;pList.Where(p&nbsp;=>&nbsp;p.Name&nbsp;!=&nbsp;null).GroupBy(p&nbsp;=>&nbsp;p.Id).Select(grp&nbsp;=>&nbsp;grp.FirstOrDefault());这个where帮助您过滤条目(可能更复杂)和groupby和select执行不同的功能。
随时随地看视频慕课网APP
我要回答