Сортировать список внешних ключей по значению-свойству словаря - PullRequest
1 голос
/ 24 апреля 2020

У меня есть Dictionary<int, Person> с данными лиц (прочитано с сервера Microsoft SQL). Ключ - это идентификатор человека.

В функции я получаю список со списком идентификаторов людей. Теперь я могу пройти через этот Список и распечатать это подмножество людей.

foreach(int ID in PersonsList)
{
  Console.write(PersonsDictionary[ID].FullName);
} 

Проблема сейчас в том, что ли Словарь или Список упорядочены каким-либо образом, но я хочу, чтобы Персоны были расположены в алфавитном порядке. Так как же отсортировать мой список идентификаторов по свойству FullName значения словаря?

1 Ответ

3 голосов
/ 24 апреля 2020

Возможно, вы захотите что-то вроде этого:

IEnumerable<string> sortedNames = 
    PersonsList
        .Select(id => PersonsDictionary[id].FullName) // Select the name for each entry
        .OrderBy(n => n, StringComparer.OrdinalIgnoreCase); // Order the names (case insenstive)

foreach(string name in sortedNames) // Materialize the ordered names
{
    Console.Write(name); // print
}

Возможно, вам понадобится добавить using System.Linq; вверху вашего файла .cs, чтобы это работало, поскольку оно использует методы расширения LINQ:

Обратите внимание, что, как и ваш исходный код, это вызовет исключение KeyNotFoundException, если PersonsList содержит ключ, которого нет в PersonsDictionary.

Попробуйте онлайн

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