Obtener lista de propiedades de Lista de objetos

88

Actualmente utilizo foreachloop para devolver una lista de objectpropiedades.

 class X
 {
     List<X> Z = GetXlist();
     List<String> r = new List<String>();

     foreach (var z in Z)
     {
         r.Add(z.A);
     }

     return r;
}

¿Hay alguna forma de acortar esto para no tener que escribir el foreachciclo?

user1615362
fuente
No estás escribiendo un bucle for. Hay una diferencia que debe tener en cuenta en programmers.stackexchange.com/questions/178218/…
Darren Young

Respuestas:

166

LINQ es la respuesta. Puede usarlo para "proyectar" desde su colección de objetos a otra colección, en este caso una colección de valores de propiedad de objeto.

List<string> properties = objectList.Select(o => o.StringProperty).ToList();
Honza Brestan
fuente
12

Podrías usar LINQ:

List<X> Z = GetXlist();

List<String> r = Z.Select(z => z.A).ToList();

return r;

O solo,

return GetXlist().Select(z => z.A).ToList();

Obtenga más información sobre LINQ . Es bastante útil.

rae1
fuente
0
List<string> properties = objectList.Select(o => o.StringProperty).ToList();

También puede hacerlo mediante un OverLoadingmétodo privado y usarlo en LINQ Query.

Anshuman
fuente
4
Esto no proporciona valor a la respuesta establecida
Ivan Kaloyanov