7

述語を内部に持つLinqを使用して、配列の最大値が配列内で何回発生するかを把握しようとしています。.Count()しかし、私はそれを行う方法を完全には理解していません。MSDNのわずかな例を読んだことから、私は理解したと思いましたが、明らかにそうではありませんでした。

これは私が考えたものです:

string[] test = { "1", "2", "3", "4", "4" };
string max = test.Max();
Label1.Text = test.Count(p => p == max);

しかし、それはうまくいきませんでした。そこで、 maxを整数に変更して、それが機能するかどうかを確認しようとしましたが、それも機能しませんでした。

4

4 に答える 4

16

使用Count(predicate)OKです。戻り値 (整数) を文字列に変換するだけです。

Label1.Text = test.Count(p => p == max).ToString();
于 2009-09-18T13:42:53.070 に答える
7

Where関数を使用して、最初にフィルタリングしてからカウントすることができます。

Label1.Text = test.Where(p => p == max).Count().ToString();
于 2009-09-18T13:41:51.557 に答える
2
        int[] test = { 2, 45, 3, 23, 23, 4, 2, 1, 1, 1, 1, 23, 45, 45, 45 };
        int count = test.Count(i => i == test.Max());

これで、最終的なカウントであるカウントが得られました。int コレクションの方が理にかなっています。これを表示するには、カウント時に ToString() を呼び出すだけです。

于 2009-09-18T13:46:58.133 に答える
0

次のようなものを試してください:

Label1.Text = test.Where(t => t == test.Max()).Count().ToString();
于 2009-09-18T13:42:38.340 に答える