Sie können dies über Enumerable.Zip tun:
%Vor%Dies funktioniert, indem jedes Wertepaar genommen wird und geprüft wird, ob die Sekunde 1 mehr als die erste ist und boolesche Werte zurückgegeben werden. Wenn alle Paare den Kriterien entsprechen, sind die Werte sequenziell.
Da es sich um eine Liste von Ganzzahlen handelt, können Sie dies etwas effizienter tun:
%Vor% Dies funktioniert nur bei Sequenzen, auf die per Index zugegriffen werden kann. Beachten Sie, dass wir values[i]
, nicht values[i-1]
verwenden, da der Aufruf Skip
die Indizes effektiv verschiebt.
Eine weitere Option ist die Verwendung von Aggregieren , um die Sequenz nur einmal zu durchlaufen.
Beachten Sie, dass im Gegensatz zu All
von Reed empfohlen Copsey Aggregate
nicht in der Mitte anhalten kann, wenn die Bedingung fehlschlägt ...
Eine zierlichere Version hätte einen Iterator, der den vorherigen Wert mitbringt, oder einen speziellen Code, der den Iterator auf "First and the rest" aufteilt, um Reeds Lösung mit einer einzigen Iteration für jedes Aufzählungselement zu implementieren.