我需要能够根据增加/减少箭头按钮的按钮单击重新排序数字列表。所以我有SortedDoctionary
目前的项目列表。当我打印出来时它看起来像这样:
key : value
1 : 1
2 : 2
3 : 25
4 : 29
5 : 31
当用户点击“向上”按钮时,我想将key[3]
更改为key[2]
。所以只需交换位置。最终结果应该给我这样的输出:
key : value
1 : 1
2 : 25
3 : 2
4 : 29
5 : 31
所以我需要在列表中向上或向下切换位置。任何帮助将不胜感激!
答案 0 :(得分:0)
int index1 = 2;
int index2 = 3;
var temp = myDict[index1];
myDict[index1] = myDict[index2];
myDict[index2] = temp;
这是经典的temp-through-a-temp变量(以区别于swap-through-xor)。问题在哪里?
答案 1 :(得分:0)
假设你有Dictionary<int, int> dict
,试试这个:
private void Swap(int key)
{
int swap = dict[key];
dict[key] = dict[key + 1];
dict[key + 1] = swap;
}
或
private void Swap(int key1, int key2)
{
if (key1 != key2)
{
int swap = dict[key1];
dict[key1] = dict[key2];
dict[key2] = swap;
}
}
答案 2 :(得分:0)
因为它是一个排序列表,大概你希望Key保持不变,但交换值?
var lower = 2;
var upper = 3;
var tmp = collection[lower];
collection[lower] = collection[upper];
collection[upper] = tmp;