2013-06-07 12 views
5

Chcę uzyskać sekwencję z liczb całkowitych z wartości A na wartość B.C#: sekwencja od min do max

Na przykład A=3 i B=9. Teraz chcę utworzyć sekwencję 3,4,5,6,7,8,9 z jedną linią kodu i bez pętli. Grałem z Enumerable.Range, ale nie znajduję rozwiązania, które działa.

Ma ktoś pomysł?

+6

Biorąc pod uwagę, że wszystkie odpowiedzi będą najprawdopodobniej korzystać z Enumerable.Range, bardzo by nam pomogło, gdybyś pokazał, co już wypróbowałeś, i powiedział, co się stało. –

+2

@Marc & Ilya, To jest * dużo * łatwych punktów, które właśnie zebraliście. –

Odpowiedz

21
var sequence = Enumerable.Range(min, max - min + 1); 

?

Dla informacji, choć - osobiście bym jeszcze ulec pokusie, aby użyć pętli:

for(int i = min; i <= max ; i++) { // note inclusive of both min and max 
    // good old-fashioned honest loops; they still work! who knew! 
} 
16
int A = 3; 
int B = 9; 
var seq = Enumerable.Range(A, B - A + 1); 

Console.WriteLine(string.Join(", ", seq)); //prints 3, 4, 5, 6, 7, 8, 9 

jeśli masz dużo, dużo liczb i charakteru ich przetwarzania strumieniowego (obsłużyć elementy po jednym na raz), wtedy nie trzeba przechowywać całej pamięci w tablicy i wygodnie z nimi pracować za pomocą interfejsu IEnumerable<T>.

Powiązane problemy