0

郵便番号の配列があります。配列内のすべての一意の郵便番号のリストを取得し、配列内で一意の郵便番号が何回発生したかをカウントするにはどうすればよいですか?

これを見た:

リスト内の出現回数をカウントするメソッド

これが私の問題の解決策だと思いますが、よくわかりません。誰か教えてください

  1. 確かにそれについて行くための最良の方法。と
  2. GroupBy を利用できるように、配列を List に入れる方法を教えてください。
4

3 に答える 3

6

これはあなたのために働くはずです:

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 は、実際にほとんどの方法であなたをそこに連れて行きます。グループを列挙する方法を示すためにこれを投稿しました。

于 2012-09-04T21:19:25.820 に答える
1

Where を使用して count == 1 のエントリのみを選択し、Select を使用して値を一覧表示してから、ToList() を使用してリストを返す必要があります。

次のようになります。

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

インターネットで 101 の linq の例を検索すると、多くの一般的な例が得られます。

于 2012-09-04T21:12:55.480 に答える
0

GroupBy は で機能するIEnumerable<T>ため、配列でも機能します (配列は IEnumerable を実装します)。GroupBy は、キーに基づいてオブジェクトをグループ化します。ここで重要なのは郵便番号そのものです。そのため、それにマップするデリゲートを渡すだけです。

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

ここで、キーuniqueZipsIGrouping<string,string>郵便番号で、要素の数はその郵便番号の出現回数です。

于 2012-09-04T21:05:08.643 に答える