簡體   English   中英

如何計算數組中每個唯一元素的出現?

[英]How do I count the occurrence of each unique element in an array?

我有一組郵政編碼。 如何獲取陣列中每個唯一郵政編碼的列表,然后計算陣列中唯一郵政編碼的出現次數?

我看見了這個:

一種統計列表中出現次數的方法

我有一個預感,這就是解決我的問題的方法,但是我不太了解。 有人可以告訴我這是否

  1. 確實是最好的方法。
  2. 向我展示如何將數組放入列表,以便可以利用GroupBy?

這應該為您工作:

var zips = new string[] { "12345", "12345", "54321" };
var groups = zips.GroupBy(z => z);

foreach(var group in groups)
    Console.WriteLine("{0} -> {1}", group.Key, group.Count());

應該給你:

12345 -> 2
54321 -> 1

driis實際上可以帶您到達那里。 我剛剛發布了此內容,以幫助說明如何枚舉組。

您應該使用Where僅選擇count == 1的條目,並使用Select列出值,然后使用ToList()返回List。

就像這樣:

List<string> uniqueZips = zips.GroupBy(z=>z).Where(z => z.Count() == 1).Select(z => z.Key).ToList();

在互聯網上搜索101個linq示例,它為您提供了許多常見示例。

GroupBy適用於IEnumerable<T> ,因此也適用於數組(數組實現IEnumerable)。 GroupBy根據密鑰對對象進行分組。 這里的關鍵是郵政編碼本身。 因此您只需傳遞一個映射到該代理的委托即可:

var zips  = new string []{"8000", "9000"}
var uniqueZips = zips.GroupBy(x => x);

現在, uniqueZipsIGrouping<string,string> ,其中鍵是郵政編碼,元素數是該郵政編碼的出現次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM