Как подсчитать количество элементов в списке, которые перемещаются или вниз? ⇐ C#

Место общения программистов C#
Anonymous
Как подсчитать количество элементов в списке, которые перемещаются или вниз?

Сообщение Anonymous »

Существует список объектов типа System.collections.generic.list. Пользователь может изменить порядок элементов, перемещая некоторые элементы вверх или вниз в списке. Процесс перемещения в списке такой: пользователь может выдвигать элемент вверх или вниз, поэтому элемент в индексе «I» меняет индекс на «I-1» для «UP» и на «I+1» для «Down». Например, если элемент «D» в индексе «3» перемещается вниз к индексу «4» вместо элемента «E», то индекс «3» из «D» изменяется на индекс «4», а элемент «E» изменяет индекс от «4» на индекс «3». Движение элемента «D» на «UP» похоже на это: индекс «3» из «D» изменяется на индекс «2», а элемент «C», который был в индексе «2», изменяет индекс от «2» на индекс »3». Я показал на картинке. Те же элементы могут быть перемещены пользователем несколько раз в разных направлениях.
Мне нужно сосчитать только те элементы, которые перемещаются пользователем, исключая элементы, которые изменили индексы только потому, что другие объекты подталкивали их вверх или вниз. «I+1» подталкивается к индексу «I». И не все движения считать удвоены. Если предмет движется дважды или вниз, тогда изменения в индексах составляют три. Например, если элемент перемещается дважды вниз, то количество измененных элементов Индекс будет 3 вместо 1, как на рисунке. Как подсчитать количество элементов в списке, которые перемещаются вверх или вниз пользователем? Если этот элемент после нескольких движений от пользователя возвращается в исходный индекс, то он не рассматривается как движение.

Код: Выделить всё

D moved down one time

original list: A,B,C,D,E,F,H,I,J
changed list:  A,B,C,E,D,F,H,I,J

the count should be 1
< /code>

 < /li>
< /ol>
D moved down two times

original list: A,B,C,D,E,F,H,I,J
changed list:  A,B,C,E,F,D,H,I,J

the count should be 2
< /code>

 < /li>
< /ol>
E moved down one time, D moved down one time

original list: A,B,C,D,E,F,H,I,J
changed list:  A,B,C,F,D,E,D,I,J

the count should be 2
< /code>
4 < /p>
E moved down one time, D moved down one time

original list: A,B,C,D,E,F,H,I,J
changed list:  A,B,C,F,D,E,H,I,J

the count should be 2


Подробнее здесь: https://stackoverflow.com/questions/796 ... up-or-down

Вернуться в «C#»