Как я могу использовать LINQ, чтобы возвратить список стран, но поставить определенную страну на вершине? - PullRequest
3 голосов
/ 13 июня 2009

У меня есть таблица со списком стран, которую я использую для заполнения раскрывающегося списка.

Как создать запрос LINQ, чтобы он возвращал список стран из этой таблицы в алфавитном порядке, за исключением размещения США наверху?

Итак, если таблица содержит:

Швеция
США
Мексика
Дания

Возвращается:

USA
Дания
Мексика
Швеция

Ответы [ 4 ]

5 голосов
/ 13 июня 2009

Вы можете использовать название страны в качестве вторичного заказа:

return countries.OrderBy(c => GetPrimaryOrdering(c)).ThenBy(c => c.Name);

int GetPrimaryOrdering(Country country) 
{ 
    return country.Name == "USA" ? 0 : 1
}
3 голосов
/ 13 июня 2009

Попробуйте это (однострочник):

var Countries = new List<string>() { "Denmark", "USA", "Mexico" };
return Countries.OrderBy(c=> c=="USA"? " ": c);

Пояснение:

Сортирует список стран по названию, заменяя "" на ту, которая должна стоять первой. Поскольку пробел стоит перед любой другой буквой в алфавитном порядке, страна «по умолчанию» будет указана первой.

0 голосов
/ 13 июня 2009

Смешно ...

var lst = new List<string>()
  { "Sweden", "USA", "Mexico", "Denmark", "Ziptown" };

lst.Sort((x, y) =>
{
  if (x == "USA" || y == "USA")
  {
    if (x == y)
    {
       return 0;
    }

    return (x == "USA") ? -1 : 1;
  }
  else
  {
    return x.CompareTo(y);     
  }
}
0 голосов
/ 13 июня 2009
  1. Добавить США в раскрывающемся списке.

  2. Добавить список стран, отсортированных по алфавиту, после слов.

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

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