LINQ查询以下内容

时间:2012-11-06 22:17:07

标签: c# .net linq

有人可以帮助为以下问题制定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}

由于

4 个答案:

答案 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]);