2012-02-20 18 views
22

W celu wypełnienia List<int> z zakresu liczb od 1 do n mogę użyć:Wypełnianie listy z określonego zakresu numerów za pomocą LINQ

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

Czy istnieje jakiś sposób, aby osiągnąć ten sam wynik za pomocą wyrażeń wstawianych LINQ?

UPDATE

Przyjmijmy, mam metoda getMonthName(i) że biorąc pod uwagę całkowitą zwraca nazwę miesiąca. Czy mogę zapełnić listę bezpośrednio nazwami miesięcy w jakiś sposób, używając opcji Wymienna

Odpowiedz

24

Chcesz użyć Enumerable.Range.

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

Albo

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

Jeśli pytasz tego rodzaju pytanie, warto spojrzeć na metodach System.Linq.Enumerable. Tam są przechowywane wszystkie te rzeczy. Nie przegap ToLookup, Concat (vs Union) i Repeat.

+0

dzięki! Załóżmy, że mam metodę getMonthName (i), która podając liczbę całkowitą podaje nazwę miesiąca. Czy mogę zapełnić listę bezpośrednio nazwami miesięcy w jakiś sposób, używając polecenia "Enumerable"? – CiccioMiami

+0

@CiccioMiami ogólnie, gdy masz drugie pytanie - najlepiej zadać je jako drugie pytanie. –

+0

masz rację, przepraszam – CiccioMiami

2

Dla nazw miesięcy można używać Select():

var months = Enumerable.Range(1,n).Select(getMonthName); 
Powiązane problemy