Пользовательский алгоритм сортировки для изменения постановления предмета - PullRequest
1 голос
/ 21 декабря 2011

Вы видите это повсюду, перетаскивая элемент в другую строку или стрелку вверх и вниз для перемещения элемента вверх или вниз по списку.

Какой предпочтительный алгоритм или шаблон для выполнения этого

Ответы [ 3 ]

0 голосов
/ 21 декабря 2011

Обычно List <>. RemoveAt (), List <>. Insert () достаточно, чтобы справиться с этим.

0 голосов
/ 22 декабря 2011

Полагаю, вопрос не только в том, как реализовать само перемещение, но и в том, что делать с ближайшим элементом в списке.

Если список упорядочен, у каждого элемента должен быть свой номер в списке.,Таким образом, общий алгоритм следующий:

Up: 1. запомните идентификатор предыдущего элемента, например

int id = items[number - 1]; //number is the number of the selected item
  1. запомните номер выбранного элемента

    int num = current_item.number;

  2. current_item.number -;

  3. изменить номер предыдущего элемента: получитьэто по id:

    prev = context.where (i => i.id == id),

, затем измените prev.number = num

То же самое для перемещения вниз, но число должно быть увеличено.

Или, если вы используете список без идентификаторов, вам нужно сохранить значение предыдущего элемента во временной переменной (или число).

0 голосов
/ 21 декабря 2011

Хм, есть в упорядоченном списке вместо сортировки?

Скажем, у вас есть список предметов:

List<string> l = new List<string>() {"one", "five", "two", "three", "four", "six"};

Хотите переместить элемент 1 ("five") в индекс 5 (до "six")?

l.Insert(5, l[1]);
l.RemoveAt(1);

Нетрудно адаптировать это к любому виду дисплея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...