LINQ: получить первый символ каждой строки в массиве - PullRequest
3 голосов
/ 01 сентября 2009

Рассмотрим строковый массив, имеющий следующую форму:

  string[] someName = new string[] { "First", "MiddleName", "LastName" };

Требуется получить первый символ от каждого элемента в массиве.

т.е.

FML

Ранее пробовал:

string initials = string.Concat(someName.Select(x => x[0]));

Вопрос: Какой запрос LINQ вы бы написали, чтобы объединить все имена, содержащиеся в массиве строк, с инициалами?

Ответы [ 5 ]

24 голосов
/ 01 сентября 2009

попробуйте это:

string shortName = new string(someName.Select(s => s[0]).ToArray());

или, если вы подозреваете, что любая из строк может быть пустой или около того:

string shortName = new string(someName.Where(s => !string.IsNullOrEmpty(s))
                                      .Select(s => s[0]).ToArray());
7 голосов
/ 01 сентября 2009

Это решение учитывает также пустые строки, удаляя их из выходных данных

var shortName = new string(
  someName
    .Where( s => !String.IsNullOrEmpty(s))
    .Select(s => s[0])
    .ToArray());
7 голосов
/ 01 сентября 2009
  string[] someName = new string[] { "First", "MiddleName", "LastName" };
  String initials = String.Join(".",someName.Select(x => x[0].ToString()).ToArray());

Производит

F.M.L

0 голосов
/ 26 сентября 2017
string[] someName = new string[] { "First", "MiddleName", "LastName" };

someName.FirstOrDefault();
0 голосов
/ 01 сентября 2009
string initials = someName.Where(s => !string.IsNullOrEmpty(s))
                          .Aggregate("", (xs, x) => xs + x.First());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...