有人可以帮助为以下问题制定LINQ查询。 我有以下键值设置列表(请注意,允许使用重复键)。有成千上万的这样的集合。
{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}
由于
答案 0 :(得分:2)
尝试
input.OrderByDescending(p => p.Key).ThenByDescending(p => p.Value);
或
input.OrderByDescending(p => new { p.Key, p.Value });
答案 1 :(得分:1)
具有两个值或Tuple<int, int>
的自定义类符合您列出的需求。
要进行分组,您可以直接使用Tuple<int, int>
并定义IComparer<Tuple<int,int>>
或从Tuple<int, int>
继承并使用该类实施IComparable<Tuple<int,int>>
。
答案 2 :(得分:0)
看看Lookup
。它表示每个映射到一个或多个值的键集合。
答案 3 :(得分:0)
var largestPair = list.OrderByDescending(z => z[0]).ThenByDecending(z => z[1]).First();
Console.WriteLine("{0}, {1}", largestPair[0], largestPair[1]);