1

C#でLinqを使用して、配列内の要素の大部分を見つける方法はありますか?もう少し複雑にするために、過半数がない場合は、最初の要素を使用する必要があります。

したがって、たとえば配列["A", "B", "B"]の場合、ステートメントはに評価される必要があり"B"ます。また、配列を使用["A", "B", "C"]すると、ステートメントはに評価され"A"ます。

これを行うには他に100の方法があると確信していますが、Linqソリューションがあるかどうか興味があります。

4

3 に答える 3

6
var majority = array.GroupBy(x => x)
                    .MaxBy(g => g.Count())
                    .Key;

ここではMaxBy、拡張メソッドとして定義できる(バージョンへのリンクをたどりますが、アイデアは単純です)を使用しています。

于 2012-05-10T17:44:01.187 に答える
5
string majority = yourArray.GroupBy(x => x)
                           .OrderByDescending(g => g.Count())
                           .First()
                           .Key;

オンラインで動作することを確認してください:ideone

于 2012-05-10T17:43:57.403 に答える
0
var strings = new List<string>{"A", "B", "B"};

var mostCommonOrFirst = strings
    .GroupBy(s => s)
    .OrderByDescending(g => g.Count())
    .Select(g => g.Key)
    .First();
于 2012-05-10T17:45:01.303 に答える