1

有人可以帮助制定针对以下问题的 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

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

具有两个值的自定义类或一个Tuple<int, int>将满足您列出的需求。

要分组,您可以Tuple<int, int>直接使用并定义一个IComparer<Tuple<int,int>> 或继承自该类Tuple<int, int>IComparable<Tuple<int,int>>使用该类实现。

于 2012-11-06T22:22:36.283 回答
0

看看Lookup。它表示一组键,每个键映射到一个或多个值。

于 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 回答