[英]Linq - Take x-amount of distinct items from a list
我需要使用特定属性显示对象列表中的前4个元素。 我只想显示前四个“ Distinct”元素。 因此,例如,如果我有一个“汽车”列表,可以说,汽车对象有一个名为“颜色”的属性作为字符串,并且该列表看起来像:
Car: red;
Car: red;
Car: blue;
Car: green;
Car: green;
Car: orange;
Car: purple;
然后,在这种情况下,我希望代码打印出前四个不同的元素“红色,蓝色,绿色,橙色”。
到目前为止,我有一些类似的东西:
String.Join("," ,cars.Take(4).Distinct().Select(a => String.Format("{0}", a.Color)));
尝试调用Select
,那么Distinct
,那么Take
:
String.Join(",", cars.Select(a => a.Color).Distinct().Take(4)));
另外, string.Join
将为您调用ToString
,因此您不需要使用String.Format
(除非您确实需要专门格式化字符串)。
您需要先获得Distinct
,然后再Take(4)
String.Join("," ,cars.Distinct().Take(4).Select(a => String.Format("{0}", a.Color)));
如果您的对象具有更多属性,则可以执行以下操作:
String.Join("," ,cars.Select(r=> r.Color).Distinct().Take(4).Select(a =>a.Color));
如果没有正确设置相等比较器,我认为Distinct()
不能用于汽车。 因此,我猜正确的答案将是:
cars.Select(x => x.Color).Distinct().Take(4);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.