2013-06-21 18 views
15

Ich möchte aufzuspalten jedes Element in einer Liste trennen, sondern auch innerhalb der einzelnen Artikel, spaltete das Element, wenn es :LINQ verwenden Elemente in einer Liste

zB enthält.

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

zeigt:

Peter:John:Connor 
Paul 
Mary:Blythe 

Allerdings ist es eine LINQ, die ich verwenden kann, was die folgende Liste zur Verfügung stellen wird:

Peter 
John 
Connor 
Paul 
Mary 
Blythe 

Ich kann dies tun mit:

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

... aber das scheint sehr lange Winde d, wenn ich sicher bin, dass LINQ eleganter sein könnte.

+0

Bitte, keine Informationen über eine Sprache in einer Frage Titel verwendet werden, umfassen, es sei denn es wouldn mache keinen Sinn ohne es. Tags dienen diesem Zweck. –

Antwort

40

Verwenden SelectMany zu den Ergebnissen der Aufspaltung abflachen jeder Name von :

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

+1 sehr schlau :) –

+1

awesome Trick :) –

+0

@JensKloster, Shaykh danke :) –

-1

Try this ...

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