1

誰かが次の問題のLINQクエリを作成するのを手伝ってもらえますか?次のKey-Value番号セットのリストがあります(重複キーが許可されていることに注意してください)。そのようなセットは何千もあります。

{4,3}, {4,1}, {4,8}, {4,9}, {2,3}, {4,9}, {3,1} , {3,4}

どのデータ構造が私に最も適しているか。また、上記のキーペアのリストとOrderByDescending()をグループ化して、キーグループの最も高いキーと値のペアを抽出できるようにします。

たとえば、上記の場合、期待される出力は次のとおりです。

{4,9}, {4,9}, {4, 8}, {4, 3}, {4, 1}, {2, 3}, {3, 4}, {3, 1}

ありがとう

4

4 に答える 4

2

試す

input.OrderByDescending(p => p.Key).ThenByDescending(p => p.Value);

また

input.OrderByDescending(p => new { p.Key, p.Value });
于 2012-11-06T22:20:13.957 に答える
1

2つの値を持つカスタムクラスまたはaTuple<int, int>は、リストしたニーズに適合します。

グループ化するTuple<int, int>には、直接使用してそのクラスを定義するIComparer<Tuple<int,int>> か、そのクラスから継承しTuple<int, int>て実装することができますIComparable<Tuple<int,int>>

于 2012-11-06T22:22:36.283 に答える
0

を見てくださいLookup。これは、それぞれが1つ以上の値にマップされたキーのコレクションを表します。

于 2012-11-06T22:22:27.533 に答える
0
var largestPair = list.OrderByDescending(z => z[0]).ThenByDecending(z => z[1]).First();
Console.WriteLine("{0}, {1}", largestPair[0], largestPair[1]);
于 2012-11-06T22:22:31.833 に答える