用LINQ区分类的性质

用LINQ区分类的性质

我有一个收藏品:

List<Car> cars = new List<Car>();

汽车是由其财产来识别的。CarCode.

我收藏了三辆车,还有两辆有着完全相同的编码。

如何使用LINQ将此集合转换为具有独特CarCodes的汽车?



慕尼黑8549860
浏览 384回答 3
3回答

智慧大石

您可以使用分组,并从每个组获得第一辆汽车:List<Car>&nbsp;distinct&nbsp;= &nbsp;&nbsp;cars&nbsp;&nbsp;.GroupBy(car&nbsp;=>&nbsp;car.CarCode) &nbsp;&nbsp;.Select(g&nbsp;=>&nbsp;g.First()) &nbsp;&nbsp;.ToList();

POPMUISE

使用MoreLINQ,它有一个DistinctBy方法:)IEnumerable<Car>&nbsp;distinctCars&nbsp;=&nbsp;cars.DistinctBy(car&nbsp;=>&nbsp;car.CarCode);(这只适用于LINQtoObjects,请注意。)

FFIVE

与Guffa相同,但作为扩展方法:public&nbsp;static&nbsp;IEnumerable<T>&nbsp;DistinctBy<T,&nbsp;TKey>(this&nbsp;IEnumerable<T>&nbsp;items,&nbsp;Func<T,&nbsp;TKey>&nbsp;property){ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;items.GroupBy(property).Select(x&nbsp;=>&nbsp;x.First());}用作:var&nbsp;uniqueCars&nbsp;=&nbsp;cars.DistinctBy(x&nbsp;=>&nbsp;x.CarCode);
打开App,查看更多内容
随时随地看视频慕课网APP