我需要重新排列一个项目列表,使所选项目移到列表末尾,最后一个项目替换前一个项目,前一个项目替换它之前的项目,以此类推。
例如,如果我有一个包含十个项目的列表,并且所选项目位于第5个位置,则该项目将移至第9个位置,9将替换8,然后8将替换7,7将替换6,6将占据第5个位置。我使用以下代码成功地获得了所需的结果:
例如,如果我有一个包含十个项目的列表,并且所选项目位于第5个位置,则该项目将移至第9个位置,9将替换8,然后8将替换7,7将替换6,6将占据第5个位置。我使用以下代码成功地获得了所需的结果:
List<int> numList = new List<int>();
int selectedNum = 5;//Selected at runtime
for (int i = 0; i < 10; i++) numList.Add(i);
int numListCount = numList.Count-1;
int tempNum = numList[numListCount];
List<int> tempList = numList.GetRange(selectedNum + 1,(numList.Count-selectedNum) - 2);
numList[numListCount] = selectedNum;
numList.RemoveRange(selectedNum, (numList.Count-selectedNum)-1);
numList.InsertRange(selectedNum, tempList);
numList.Insert(numListCount - 1, tempNum);
结果如下:
0,1,2,3,4,6,7,8,9,5
我确信我的代码又丑又低效:我有两个问题:
- 是否可以使用Lambda获得相同的结果?如果不行,则
- 我该如何改进我的代码。谢谢。