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