Список имен сортировка их по фамилии

#c# #linq

#c# #linq

Вопрос:

Мне нужно прочитать список имен в одной строке, ',' например: John Doe, Johnny Di, ... Я новичок, поэтому я действительно не знаю, как правильно читать из списка, но это то, что мне удалось собрать

 var names = new Listlt;stringgt;();  string name1 = Console.ReadLine();  while (name1 != "") {  names.Add(name1);    name1 = Console.ReadLine(); }   var res = from name in names  orderby name.Split(" ")[1]  ascending  select name;  

Комментарии:

1. var names = Console.ReadLine().Split(',') ?

2. Ваш код не читается в списке имен, разделенных запятыми, он читает имена по одному, пока не будет введен пробел.

Ответ №1:

Что — то вроде этого:

 var res = Console  .ReadLine()  .Split(',', StringSplitOptions.TrimEntries)  .OrderBy(name =gt; name  .Split(' ', StringSplitOptions.RemoveEmptyEntries)  .LastOrDefault(),  StringComparer.OrdinalIgnoreCase)  .ToList(); // .ToArray(); if you want an array  

Здесь мы

  1. Прочитайте вводимые пользователем данные — Console.ReadLine() — все имена, разделенные запятыми (например John Doe, Johnny Di, John Smith )
  2. Разделите ввод пользователя , , обрезая каждый элемент (пусть это будет красиво и допускает пробелы до и после запятых, например John Smith, Jack Doe ).
  3. Элементы заказа: мы Split name должны получить фамилию. LastOrDefault для фамилии
  4. Давайте составим список ( Listlt;stringgt; ) в виде res