Мне нужно изменить список элементов так, чтобы выбранный элемент переместился в конец списка, а последний элемент заменил предыдущий, а предыдущий элемент заменил предыдущий, и так далее.
Например, если у меня есть список из десяти предметов, и выбранный предмет находится в позиции 5, этот предмет переходит в позицию 9 и 9 заменяет 8, затем 8 заменяет 7 и 7 заменяет 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?Если нет, то
- Как я могу уточнить свой код.Спасибо.