У меня есть проблема, на которую я, может казаться, не нахожу ответ посредством поисков (или это, или я ищу абсолютно неправильную вещь!). У меня есть список объектов, названных "Лучшие 10" в sortedlist объекте, который заполняется от моего DB (SortedList, где интервал является положением, и строка является объектом). Я хочу смочь переместить вверх объекты и вниз порядок списка при щелчке кнопки и затем сохранить новый порядок назад к DB. Я соглашаюсь с частью DB, это - просто переупорядочение, я действительно борюсь с - действительно ли sortedlist является корректным набором для этого?
Большое спасибо за любой совет предложено.
SortedList предназначен для поддержания порядка в вашем SortedList при добавлении или удалении элементов из него.
Вы должны создать собственный список ваших объектов, а затем отсортировать их по свойству этого объекта.
Итак, если ваша запись в базе данных была такой, вы можете поместить ее в объект, добавить в список, а затем отсортировать с помощью Lambda по любым критериям, которые вам нравятся.
public class LeaguePosition
{
public int Position { get; set; }
public string Team { get; set; }
}
List<LeaguePosition> League = new List<LeaguePosition>();
League.Add(new LeaguePosition() { Position = 2, Team = "Wolves" });
League.Add(new LeaguePosition() { Position = 3, Team = "Spurs" });
League.Add(new LeaguePosition() { Position = 1, Team = "Villa" });
League.Sort((teamA, teamB) => teamA.Position.CompareTo(teamB.Position));
Затем вы также можете использовать RemoveAt () и Insert (), чтобы переместить элементы в произвольные позиции в списке.
LeaguePosition teamToMove = League[1];
League.RemoveAt(1);
League.Insert(2, teamToMove);
Нет, SortedList будет хранить вещи в отсортированном (буквенно-цифровом) порядке. Вам нужен простой список, который позволит вам вытаскивать вещи и вставлять их в разные позиции.
SortedList заставит каждый элемент отслеживать свое положение в списке относительно других элементов (ваше положение int). Это должно быть обязанностью Коллекции, поэтому вы должны использовать какую-то Коллекцию, которая позволит вам перемещать вещи вверх / вниз / вокруг без необходимости вручную исправлять каждый элемент.
Я бы сказал, что SortedList - это именно то, что вам нужно. Когда вы получаете данные из базы данных, вы хотите сохранить их в порядке, основанном на поле позиции (то, что я могу сказать из вашего OP). Я предполагаю, что у вас будет класс, содержащий данные, которые вы получаете из БД. Чтобы сохранить данные в правильном порядке, вам нужно будет реализовать интерфейс IComparable в вашем пользовательском классе, чтобы SortedList знал, какие значения использовать для сохранения порядка в списке. Таким образом, по мере добавления/удаления элементов вы будете сохранять их в правильном порядке.
Вы можете использовать общий List<>, но тогда вам придется писать весь код для сортировки элементов самостоятельно, SortedList уже делает это, так зачем изобретать колесо?
Посмотрите эту страницу для получения дополнительной информации:
http://www.dotnetspider.com/resources/4679-Applying-custom-sort-SortedList.aspx