Переупорядочение набора C#

У меня есть проблема, на которую я, может казаться, не нахожу ответ посредством поисков (или это, или я ищу абсолютно неправильную вещь!). У меня есть список объектов, названных "Лучшие 10" в sortedlist объекте, который заполняется от моего DB (SortedList, где интервал является положением, и строка является объектом). Я хочу смочь переместить вверх объекты и вниз порядок списка при щелчке кнопки и затем сохранить новый порядок назад к DB. Я соглашаюсь с частью DB, это - просто переупорядочение, я действительно борюсь с - действительно ли sortedlist является корректным набором для этого?

Большое спасибо за любой совет предложено.

5
задан Asaf R 30 March 2010 в 17:39
поделиться

4 ответа

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);
6
ответ дан 14 December 2019 в 01:05
поделиться

Нет, SortedList будет хранить вещи в отсортированном (буквенно-цифровом) порядке. Вам нужен простой список, который позволит вам вытаскивать вещи и вставлять их в разные позиции.

3
ответ дан 14 December 2019 в 01:05
поделиться

SortedList заставит каждый элемент отслеживать свое положение в списке относительно других элементов (ваше положение int). Это должно быть обязанностью Коллекции, поэтому вы должны использовать какую-то Коллекцию, которая позволит вам перемещать вещи вверх / вниз / вокруг без необходимости вручную исправлять каждый элемент.

0
ответ дан 14 December 2019 в 01:05
поделиться

Я бы сказал, что SortedList - это именно то, что вам нужно. Когда вы получаете данные из базы данных, вы хотите сохранить их в порядке, основанном на поле позиции (то, что я могу сказать из вашего OP). Я предполагаю, что у вас будет класс, содержащий данные, которые вы получаете из БД. Чтобы сохранить данные в правильном порядке, вам нужно будет реализовать интерфейс IComparable в вашем пользовательском классе, чтобы SortedList знал, какие значения использовать для сохранения порядка в списке. Таким образом, по мере добавления/удаления элементов вы будете сохранять их в правильном порядке.

Вы можете использовать общий List<>, но тогда вам придется писать весь код для сортировки элементов самостоятельно, SortedList уже делает это, так зачем изобретать колесо?

Посмотрите эту страницу для получения дополнительной информации:

http://www.dotnetspider.com/resources/4679-Applying-custom-sort-SortedList.aspx

0
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: