6

私は C# を初めて使用するので、このトピックについて何か助けが得られることを願っています。要素を持つ配列があり、すべてのアイテムが表示される回数を表示する必要があります。

たとえば[1, 2, 3, 4, 4, 4, 3]1は 1 回4表示され、3 回表示されます。

私は次のことを行いましたが、foreach/if ステートメントに入れる方法がわかりません...

int[] List = new int[]{1,2,3,4,5,4,4,3};
foreach(int d in List)
{
    if("here I want to check for the elements")
}

ありがとうございます。これが非常に基本的なものである場合は申し訳ありません...

4

5 に答える 5

12

これはEnumerable.GroupByで処理できます。ガイダンスとして、Count と GroupBy に関するC# LINQ サンプルセクションを参照することをお勧めします。

あなたの場合、これは次のようになります。

int[] values = new []{1,2,3,4,5,4,4,3};

var groups = values.GroupBy(v => v);
foreach(var group in groups)
    Console.WriteLine("Value {0} has {1} items", group.Key, group.Count());
于 2012-08-07T17:21:00.947 に答える
7

Dictionary見つかったアイテムの数とそれに関連する数を保持できます。以下の例でdict[d]は、値によって要素を参照します。たとえばd = 4

int[] List = new int[]{1,2,3,4,5,4,4,3};
var dict = new Dictionary<int, int>();
foreach(int d in List)
{
    if (dict.ContainsKey(d))
        dict[d]++;
    else
        dict.Add(d, 1);
}

ループが終了すると、 のforeach一意の値ごとに 1 つのエントリが作成されdictます。にアクセスすることで、各アイテムの数を取得できますdict[d]。ここでd、元のリストの整数値です。

于 2012-08-07T17:21:29.067 に答える
3

LINQの回答は素晴らしいですが、自分でやろうとしている場合:

int[] numberFound = new int[6];
int[] List = new int[] { 1, 2, 3, 4, 5, 4, 4, 3 };
foreach (int d in List)
{
    numberFound[d]++;
}
于 2012-08-07T17:36:23.340 に答える
1
var list = new int[] { 1, 2, 3, 4, 5, 4, 4, 3 };
var groups = list.GroupBy(i => i).Select(i => new { Number = i.Key, Count = i.Count() });
于 2012-08-07T17:23:31.637 に答える