繁体   English   中英

Linq-从列表中获取x数量的不同项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM