【发布时间】:2011-09-08 16:40:59
【问题描述】:
我需要重新排列项目列表,以便所选项目位于列表的末尾,最后一个项目替换前一个项目,前一个项目替换它之前的项目,依此类推。
例如,如果我有一个包含 10 个项目的列表,并且所选项目位于第 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 获得相同的结果?如果不是,那么
- 如何优化我的代码。谢谢。
【问题讨论】: