Использование LINQ для разделения элементов в списке

Я хочу разделить каждый элемент в списке, но также и внутри каждого элемента, разделить элемент, если он содержит :

например.

string[] names = {"Peter:John:Connor","Paul","Mary:Blythe"};
name.Dump();

Покажет:

Peter:John:Connor
Paul
Mary:Blythe

Однако есть ли LINQ, который я могу использовать, который предоставит следующий список:

Peter
John
Connor
Paul
Mary
Blythe

Я могу сделать это, используя:

foreach (var person in names)
{
    x = person.split(":").ToList();
    foreach (var personinlist in x)
    {
        // personinlist
    }
}          

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

Ответы

Ответ 1

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

names.SelectMany(n => n.Split(':'))
     .Dump();

Ответ 2

Попробуйте это...

names = names.SelectMany(n => n.Split(':')).ToArray();