郵便番号の配列があります。配列内のすべての一意の郵便番号のリストを取得し、配列内で一意の郵便番号が何回発生したかをカウントするにはどうすればよいですか?
これを見た:
これが私の問題の解決策だと思いますが、よくわかりません。誰か教えてください
- 確かにそれについて行くための最良の方法。と
- GroupBy を利用できるように、配列を List に入れる方法を教えてください。
郵便番号の配列があります。配列内のすべての一意の郵便番号のリストを取得し、配列内で一意の郵便番号が何回発生したかをカウントするにはどうすればよいですか?
これを見た:
これが私の問題の解決策だと思いますが、よくわかりません。誰か教えてください
これはあなたのために働くはずです:
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<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);
ここで、キーuniqueZips
はIGrouping<string,string>
郵便番号で、要素の数はその郵便番号の出現回数です。