Ho una lista di questa classe:Crea elenco con un solo membro della classe
public class Data
{
public string name {get; set;}
public int width {get; set;}
}
E voglio fare un metodo che restituisce un elenco di solo la proprietà nome. Come questo:
public List<string> GetAllNames()
{ return MyDataList<name>.ToList(); }
Quindi, se ho questa lista:
name
= Jon -width
= 10name
= Jack -width
= 25
voglio il lista seguente:
name
= Jonname
= Jack
E 'possibile?
rocce LINQ! Grazie. – Nick
Come nota, se si restituisce una lista allora si sta per duplicare sostanzialmente l'intero elenco. Questo può richiedere tempo/memoria se si dispone di un elenco di grandi dimensioni. Se si passa a IEnumerable e quindi non si esegue .ToList(), quindi si otterrà un elenco pigro che è quasi gratuito da creare e consumerà molto poco (<100bytes) di spazio –
@TimothyBaldridge: True. Vale anche la pena notare che se si utilizza la route 'IEnumerable', verrà rivalutata ogni volta che si esegue iterazione su di essa. Anche il tuo IEnumerable è legato al set originale di oggetti, quindi impedirà al garbage collector di ripulire tutti gli oggetti 'Data' anche se si prevede di utilizzare solo i nomi da essi. Inoltre, se 'MyDataList' cambia, l'' IEnumerable' restituito verrebbe modificato e potrebbe generare un'eccezione se viene utilizzato in un thread separato. Spesso niente di tutto ciò è importante, ma è sempre bene capire cosa sta succedendo sotto le coperte. – StriplingWarrior