Converti un elenco di oggetti in una matrice di una delle proprietà dell'oggetto


133

Di 'che ho la seguente classe:

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

e poi faccio un elenco delle seguenti classi ( List<ConfigItemType> MyList)

Ora ho un metodo con la seguente firma:

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

Come posso adattare MyListdentro al listGoesHereutilizzando il valore in ConfigItemType.Namequanto l'array params stringa?

Sono abbastanza sicuro che Linq possa farlo .... ma MyListnon ha un selectmetodo (che è quello che avrei usato).

Risposte:


278

Stai cercando

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

Poiché Selectè un metodo di estensione, assicurati di aggiungere quello spazio dei nomi aggiungendo a

using System.Linq

al tuo file, quindi verrà visualizzato con Intellisense.


Questo è quello che ho pensato anche io. Ma Select non si presenta nell'intellisense.
Vaccano,

GAAAAAAA! Mi mancava il linq include!
Vaccano,

1
è necessario utilizzare utilizzando System.Data.Linq; quindi segui la risposta BrokenGlass
Rami Shareef,

1
Sono scemo! Ah bene. Rappresentante gratuito per avermi aiutato a capirlo.
Vaccano,

soluzione fantastica. Volevo accedere alla stringa "id" nella mia lista di oggetti. Ha funzionato perfettamente List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box

19

Sono abbastanza sicuro che Linq possa farlo .... ma MyList non ha un metodo select (che è quello che avrei usato).

Sì, LINQ può farlo. È semplicemente:

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

Molto probabilmente il problema è che o non si ha un riferimento System.Coreo manca una usingdirettiva per System.Linq.



6

Per tutti coloro che sono bloccati con .NET 2.0, come me, provare il seguente modo (applicabile all'esempio nell'OP):

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

dove ConfigItemList è la variabile di elenco.


Grazie per la pubblicazione per il pubblico di .NET 2.0!
webworm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.