Допустим, у меня есть общий список, такой как этот:
var categories = new List<Category>() {
new Category() { sequence = 3, categoryName = "Category F" },
new Category() { sequence = 1, categoryName = "Category S" },
new Category() { sequence = 2, categoryName = "Category Z" },
new Category() { sequence = 4, categoryName = "Category X" },
new Category() { sequence = 5, categoryName = "Category V" }
};
Я пытаюсь заменить данный порядковый номер другим, т.е. обновить элемент в списке с последовательностью # 2 с номером 5, как показано ниже:
int currSeq = 2;
int newSeq = 5;
var item = categories.Find(a => a.sequence == currSeq);
item.sequence = newSeq;
Если бы newSeq не дублировался, например, newSeq = 6, я мог бы просто сделать OrderBy:
categories = categories.OrderBy(c => c.sequence).ToList();
Но проблема в том, что когда они становятся дубликатами, мне нужен newSeqстаньте в последовательности # 5 и поднимите другую дублированную последовательность # 5 + 1.
Пожалуйста, помогите с любым руководством, решающим это.Спасибо.
Обновление: в некоторых случаях, когда новая последовательность <старая последовательность, выходные данные не соответствуют желаемым. </p>
Сценарий A:
var categories = new List<Category>() {
new Category() { sequence = 3, categoryName = "Category F" },
new Category() { sequence = 1, categoryName = "Category S" },
new Category() { sequence = 2, categoryName = "Category Z" },
new Category() { sequence = 5, categoryName = "Category X" },
new Category() { sequence = 6, categoryName = "Category V" }
};
int currSeq = 2;
int newSeq = 1;
var result = categories.UpdateSequence(currSeq,newSeq).OrderBy(x=>x.sequence);
Сценарий вывода A:
1: Category S
3: Category Z
4: Category F
5: Category X
6: Category V
Сценарий требуемого вывода A:
1: Category Z
2: Category S
3: Category F
5: Category X
6: Category V
Сценарий B:
int currSeq = 3;
int newSeq = 1;
var result = categories.UpdateSequence(currSeq,newSeq).OrderBy(x=>x.sequence);
Сценарий вывода B:
1: Category Z
2: Category S
4: Category F
5: Category X
6: Category V
Сценарий требуемого вывода B:
1: Category F
2: Category S
3: Category Z
5: Category X
6: Category V