如何使用LINQ而不是使用BubbleSort对两个整数的Dictionary进行排序?

时间:2015-12-04 09:27:57

标签: c# sorting dictionary

我尝试使用buble sort对Dictionary进行排序。我遇到的问题是我想保留钥匙。例如:

我的字典看起来像这样:

{[0,5],[1,2],[2,3],[3,1],[4,9]}

使用冒泡排序后,我应该有这样的字典:

{[3,1],[1,2],[2,3],[0,5],[4,9]}

这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

字典没有顺序概念(参见The order of elements in Dictionary),因此无法自行排序。你给的两本词典是等价的。

您可以改为创建键值对列表并实现BubbleSort以仅比较每对中的第二个元素。像这样,但使用Bubblesort而不是OrderBy:

var sample = new Dictionary<int, int>
{
    {0,5},
    {1,2},
    {2,3},
    {3,1},
    {4,9}
};

var keyValuePairs = sample.Select(p => new Tuple<int, int>(p.Key, p.Value)).ToList();

var sortedKeyValuePairs = keyValuePairs.OrderBy(t => t.Item2);