簡體   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