Convertir une liste d'objets en un tableau de l'une des propriétés de l'objet


133

Disons que j'ai la classe suivante:

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

puis je fais une liste des classes suivantes (List<ConfigItemType> MyList )

Maintenant, j'ai une méthode avec la signature suivante:

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

Comment puis-je m'adapter MyListà l' listGoesHereutilisation de la valeur dansConfigItemType.Name comme tableau de chaînes de paramètres?

Je suis assez sûr que Linq peut le faire ... mais MyListn'a pas de selectméthode dessus (ce que j'aurais utilisé).

Réponses:


278

Tu recherches

MyList.Select(x=>x.Name).ToArray();

Puisqu'il Selects'agit d'une méthode d'extension, assurez-vous d'ajouter cet espace de noms en ajoutant un

using System.Linq

dans votre fichier - alors il apparaîtra avec Intellisense.


C'est ce à quoi j'ai pensé aussi. Mais Select n'apparaît pas dans l'intellisense.
Vaccano le

GAAAAAAA! Il me manquait le linq include!
Vaccano

1
vous devez utiliser en utilisant System.Data.Linq; puis suivez la réponse de BrokenGlass
Rami Shareef

1
Je suis stupide! Et bien. Représentant gratuit pour m'aider à comprendre.
Vaccano

solution fantastique. Je voulais accéder à la chaîne "id" dans ma liste d'objets. A travaillé parfaitement List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

Je suis assez sûr que Linq peut le faire ... mais MyList n'a pas de méthode de sélection (ce que j'aurais utilisé).

Oui, LINQ peut le faire. C'est simplement:

MyList.Select(x => x.Name).ToArray();

Le problème est probablement que vous n'avez pas de référence System.Coreou que vous n'avez pas de usingdirective pour System.Linq.



6

Pour tous ceux qui sont bloqués avec .NET 2.0, comme moi, essayez la méthode suivante (applicable à l'exemple dans l'OP):

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
{ 
   return ci.Name; 
}).ToArray();

ConfigItemList est votre variable de liste.


Merci d'avoir posté pour la foule .NET 2.0!
webworm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.