2010-09-29 15 views
17

Ich habe eine KlasseCollection String mit Linq

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

List<Person> PersonList = new List<Perso>(); 
PersonList.Add(new Person() { FirstName = "aa", LastName = "AA" }); 
PersonList.Add(new Person() { FirstName = "bb", LastName = "BB" }); 

Ich mag einen String mit einem Komma Trennzeichen für die Name VZ bekommen würde, mit Linq, das Ergebnis wie folgt aussehen: AA, BB

danke,

+0

.NET 3.5 oder 4.0? –

Antwort

42

Wenn Sie .NET sind 4:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)); 

Wenn Sie .NET 3.5 verwenden sind:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName) 
               .ToArray()); 

(Grundsätzlich .NET 4 hatte einige zusätzliche Überlastungen string.Join hinzugefügt.)

7

Sie

PersonList.Select(p => p.LastName).Aggregate((s1,s2) => s1 + ", " + s2); 
+0

Schöne Alternative! –

8

Schnur Gegenstände verketten verwenden können, mit Separatoren, Sie String.Join

verwenden können

In .NET 3.5 und darunter nimmt dies ein Array als zweiten Parameter, aber in 4.0 hat es eine Überladung, die eine IEnumerable<T>, wobei T in diesem Fall ist String.

Bewaffnet mit diesen Informationen, hier ist der Code, den Sie möchten.

Für .NET 3.5:

string result = String.Join(", ", 
    (from p in PersonList 
    select p.LastName).ToArray()); 

Für .NET 4.0 Sie den Anruf ToArray weglassen:

string result = String.Join(", ", 
    from p in PersonList 
    select p.LastName); 

Wenn Sie die LINQ-Syntax löschen möchten und nur die LINQ-Erweiterung verwenden Methoden, hier ist das gleiche in dieser Variante:

Für .NET 3.5:

string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray()); 

Für .NET 4.0 Sie den Anruf ToArray weglassen:

string result = String.Join(", ", PersonList.Select(p => p.LastName)); 

Hinweis: Die 3,5-Varianten oben funktioniert natürlich auch in 4.0, haben sie nicht die alte Methode entfernen oder ersetzen, sie einfach eine für den typischen Fall hinzugefügt.

Verwandte Themen