2010-09-29 19 views
17

tengo una claseColección de cadena usando 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" }); 

me gustaría obtener una cadena con una coma como separador para el Apellido, utilizando LINQ, el resultado se parece a: AA, BB

gracias,

+0

.NET 3.5 o 4.0? –

Respuesta

42

Si está utilizando .NET 4:

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

Si está utilizando .NET 3.5:

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

(Básicamente .NET 4 tenía algunas sobrecargas extra añadido a string.Join.)

7

Usted puede utilizar

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

¡Buena alternativa! –

8

Para concatenar los elementos de cuerda, con separadores, puede utilizar String.Join

En .NET 3.5 y siguientes, esto toma una matriz como el segundo parámetro, pero en 4.0 tiene una sobrecarga que toma un IEnumerable<T>, donde T en este caso es String.

Armado con esta información, aquí está el código que desea.

para .NET 3.5:

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

para .NET 4.0 se puede omitir la llamada a ToArray:

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

Si desea colocar el LINQ sintaxis y sólo tiene que utilizar la extensión de LINQ métodos, aquí es el mismo que en la variante:

para .NET 3.5:

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

para .NET 4.0 se puede omitir la llamada a ToArray:

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

Nota: Los 3,5 variantes anteriores, por supuesto, funciona en 4.0, así, no se quitaron o reemplazar el antiguo método, que sólo agregó uno para el caso típico.

Cuestiones relacionadas