我需要使用某个属性显示对象列表中的前4个元素。我只想显示前四个“Distinct”元素。因此,举例来说,如果我有一个'Car'列表,那么Car对象有一个名为'Color'的属性作为字符串,列表如下所示:
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)));
答案 0 :(得分:5)
尝试拨打Select
,然后Distinct
,然后Take
:
String.Join(",", cars.Select(a => a.Color).Distinct().Take(4)));
此外,string.Join
会为您调用ToString
,因此您无需使用String.Format
(除非您确实需要专门格式化字符串)。
答案 1 :(得分:1)
您需要先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));
答案 2 :(得分:0)
我不认为Distinct()
适用于没有正确设置相等比较器的汽车。
所以,我想,正确答案将是:
cars.Select(x => x.Color).Distinct().Take(4);