Полагаю, вопрос не только в том, как реализовать само перемещение, но и в том, что делать с ближайшим элементом в списке.
Если список упорядочен, у каждого элемента должен быть свой номер в списке.,Таким образом, общий алгоритм следующий:
Up: 1. запомните идентификатор предыдущего элемента, например
int id = items[number - 1]; //number is the number of the selected item
запомните номер выбранного элемента
int num = current_item.number;
current_item.number -;
изменить номер предыдущего элемента: получитьэто по id:
prev = context.where (i => i.id == id),
, затем измените prev.number = num
То же самое для перемещения вниз, но число должно быть увеличено.
Или, если вы используете список без идентификаторов, вам нужно сохранить значение предыдущего элемента во временной переменной (или число).