Obtenir la liste des propriétés à partir de la liste des objets

88

Actuellement, j'utilise foreachloop pour renvoyer une liste de objectpropriétés.

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

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

     return r;
}

Existe-t-il un moyen de raccourcir cela pour ne pas avoir à écrire la foreachboucle?

user1615362
la source
Vous n'écrivez pas une boucle for. Il y a une différence que vous devez savoir sur programmers.stackexchange.com/questions/178218/…
Darren Young

Réponses:

166

LINQ est la réponse. Vous pouvez l'utiliser pour "projeter" votre collection d'objets vers une autre collection - dans ce cas, une collection de valeurs de propriété d'objet.

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

Vous pouvez utiliser LINQ:

List<X> Z = GetXlist();

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

return r;

Ou juste,

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

En savoir plus sur LINQ . C'est assez utile.

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

Vous pouvez également le faire par OverLoadingméthode privée et l'utiliser dans la requête LINQ.

Anshuman
la source
4
Cela ne donne pas de valeur à la réponse établie
Ivan Kaloyanov