Hinweis: Dadurch wird eine Sequenz erstellt, die bei 0 mit 10 Elementen beginnt (und bei 9 endet). Wenn Sie 0 bis 10 möchten , wäre der zweite Parameter 11. Wenn Sie ein tatsächliches Array benötigen und nicht IEnumerable<int>, schließen Sie einen Aufruf ein .ToArray().
Anthony Pegram
39
Enumerable.Range(0,11);
Erzeugt eine Folge von Integralzahlen innerhalb eines bestimmten Bereichs.
Mit "komplizierter" meinen Sie nur "wo Sie Anfang und Ende haben, anstatt die Anzahl der Elemente"? Ansonsten fehlt mir deine Bedeutung. 🤔
ruffin
1
Ich glaube, ich habe über OddSequenceEvenSequenceandere benutzerdefinierte Bereiche nachgedacht . if (++n1 % 2 == 0) yield return n1, zum Beispiel. Es ist ein paar Tage her;)
Josiah Ruddell
Ha, ja, ein oder zwei Tage, nehme ich an. Oder ein paar tausend. ; ^)
var seq =0..2;var array =newstring[]{"First","Second","Third",};foreach(var s in array[seq]){System.Console.WriteLine(s);}// Output: First, Second
Oder wenn Sie erstellen möchten, IEnumerable<int>können Sie die Erweiterung verwenden:
publicstaticIEnumerable<int>ToEnumerable(thisRange range){for(var i = range.Start.Value; i < range.End.Value; i++){yieldreturn i;}}...var seq =0..2;foreach(var s in seq.ToEnumerable()){System.Console.WriteLine(s);}// Output: 0, 1
PS Aber seien Sie vorsichtig mit 'Indizes von Ende' . Beispielsweise funktioniert die ToEnumerable-Erweiterungsmethode nicht mit var seq = ^2..^0.
Wenn Sie eine Folge von Zahlen ( IEnumerable<int>) 0bis zu einer Variablen auflisten möchten end, versuchen Sie es
Enumerable.Range(0,++10);
Um eine Folge von Zahlen von 0 bis 10 zu erhalten, soll die Folge bei 0 beginnen (wobei zu beachten ist, dass es 11 Zahlen zwischen 0 und 10 einschließlich gibt).
Wenn Sie eine unbegrenzte lineare Reihe wünschen, können Sie eine Funktion wie schreiben
IEnumerable<int>Series(int k =0,int n =1,int c =1){while(true){yieldreturn k;
k =(c * k)+ n;}}
was du gerne gebrauchen könntest
varZeroTo1000=Series().Take(11);
Wenn Sie eine Funktion möchten, die Sie wiederholt aufrufen können, um inkrementelle Nummern zu generieren, möchten Sie vielleicht etwas Ähnliches.
privatestaticIEnumerable<int>FromZero(thisint count){if(count <=0)yieldbreak;for(var i =0; i < count; i++){yieldreturn i;}}privatestaticIEnumerable<int>FromOne(thisint count){if(count <=0)yieldbreak;for(var i =1; i <= count; i++){yieldreturn i;}}
IEnumerable<int>
, schließen Sie einen Aufruf ein.ToArray()
.Erzeugt eine Folge von Integralzahlen innerhalb eines bestimmten Bereichs.
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx
quelle
Sie können eine einfache Funktion erstellen. Dies würde für eine kompliziertere Sequenz funktionieren. Ansonsten
Enumerable.Range
sollte das reichen.quelle
OddSequence
EvenSequence
andere benutzerdefinierte Bereiche nachgedacht .if (++n1 % 2 == 0) yield return n1
, zum Beispiel. Es ist ein paar Tage her;)Linq-Projektion mit der selten verwendeten Indexerüberladung (i) :
Ich bevorzuge diese Methode wegen ihrer Flexibilität.
Zum Beispiel, wenn ich Abend will:
Oder wenn ich 5-Minuten-Schritte einer Stunde möchte:
Oder Zeichenfolgen:
quelle
In C # 8.0 können Sie Indizes und Bereiche verwenden
Beispielsweise:
Oder wenn Sie erstellen möchten,
IEnumerable<int>
können Sie die Erweiterung verwenden:PS Aber seien Sie vorsichtig mit 'Indizes von Ende' . Beispielsweise funktioniert die ToEnumerable-Erweiterungsmethode nicht mit
var seq = ^2..^0
.quelle
Meine Implementierung:
quelle
Ursprünglich hier beantwortet .
Wenn Sie eine Folge von Zahlen (
IEnumerable<int>
)0
bis zu einer Variablen auflisten möchtenend
, versuchen Sie esUm eine Folge von Zahlen von 0 bis 10 zu erhalten, soll die Folge bei 0 beginnen (wobei zu beachten ist, dass es 11 Zahlen zwischen 0 und 10 einschließlich gibt).
Wenn Sie eine unbegrenzte lineare Reihe wünschen, können Sie eine Funktion wie schreiben
was du gerne gebrauchen könntest
Wenn Sie eine Funktion möchten, die Sie wiederholt aufrufen können, um inkrementelle Nummern zu generieren, möchten Sie vielleicht etwas Ähnliches.
Wenn Sie anrufen
Seq()
, wird die nächste Bestellnummer zurückgegeben und der Zähler erhöht.quelle
Ich habe diese Funktionen in meinem Code
Dies hilft, einige für (i) Code zu reduzieren.
quelle