2012-02-20 2 views
22

Al fine di compilare un List<int> con una serie di numeri da 1 al n posso usare:compilare un elenco con una specifica gamma di numeri utilizzando LINQ

for (i=1; i<=n; i++) 
{ 
    myList.Add(i); 
} 

non v'è alcun modo per raggiungere il lo stesso risultato usando le espressioni inline LINQ?

UPDATE

Si supponga Ho un metodo getMonthName(i) che, dato il numero intero restituisce il nome del mese. Posso popolare la lista direttamente con i nomi dei mesi in qualche modo usando Enumerable

risposta

24

Si desidera utilizzare Enumerable.Range.

myList.AddRange(Enumerable.Range(1, n)); 

O

myList = Enumerable.Range(1, n).ToList(); 

Se stai chiedendo questo tipo di domanda, si potrebbe desiderare di guardare oltre i metodi di System.Linq.Enumerable. È lì che viene mantenuta tutta questa roba. Da non perdere ToLookup, Concat (vs Union) e Repeat.

+0

grazie! Supponiamo che abbia un metodo getMonthName (i) che, dato il numero intero, fornisce il nome del mese. Posso popolare la lista direttamente con i nomi dei mesi in qualche modo usando 'Enumerable'? – CiccioMiami

+0

@CiccioMiami generalmente, quando hai una seconda domanda, è meglio chiederla come seconda domanda. –

+0

hai ragione, mi scuso per il numero – CiccioMiami

2

Per i nomi dei mesi è possibile utilizzare Select():

var months = Enumerable.Range(1,n).Select(getMonthName);