Проблема с сортировкой списка - PullRequest
0 голосов
/ 20 октября 2010

У меня проблема с сортировкой коллекции. Пользователь сохраняет несколько значений и сортирует их.

При следующем запуске программа должна заказать новую коллекцию.

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

Я написал некоторый код и хочу получить ваш отзыв. Если он имеет смысл

var oldValues = new List<string>(new[] { "id5", "id3", "id1" });
var valuesToOrder = new List<string>(new[] { "id1", "id2", "id3", "id4" });

int numberOfReorderedValues = 0;

for (int i = 0; i < oldValues.Count; i++)
{
    if (valuesToOrder.Contains(oldValues[i]))
    {
         int indexOfValueWhichShouldBeBefore = valuesToOrder.IndexOf(oldValues[i]);
         string valueWhichShouldBeBefore = valuesToOrder[indexOfValueWhichShouldBeBefore];

         string valueWhichShouldBeAfter = valuesToOrder[numberOfReorderedValues];

         valuesToOrder[numberOfReorderedValues] = valueWhichShouldBeBefore;
         valuesToOrder[indexOfValueWhichShouldBeBefore] = valueWhichShouldBeAfter;


         numberOfReorderedValues++;

Этот код работает, но я должен завтра показать его своему боссу, и я не пойду дураком

1 Ответ

1 голос
/ 20 октября 2010

Непонятно, что вы ищете.

Похоже, у вас есть 2 списка.Один из них содержит список «обязательных», а другой содержит список «нужных».

Как насчет использования LINQ для сортировки?

var oldValues = new List<string>(new[] { "id5", "id3", "id1" });
var valuesToOrder = new List<string>(new[] { "id1", "id2", "id3", "id4" });

var sorted = valuesToOrder.Intersect(oldValues).OrderBy(x=>x);

// sorted now has id1 and id3, sorted alphabetically.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...