Ich bin etwas überrascht über die Ergebnisse des folgenden Codes, bei dem ich einfach alle 3en aus einer Folge von Ints entfernen möchte:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 }
Warum wird 3 nicht übersprungen?
Mein nächster Gedanke war: OK, die Ausnahmeregelung wird es schon richten:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // Oh noes! Returns { 1, 2 }
Zusammengefasst,
- Außer den 3 entfernt, sondern auch entfernt nicht unterscheidbare Elemente. Grr.
- SkipWhile überspringt nicht die letzte Element, auch wenn es der Bedingung entspricht. Grr.
Kann jemand erklären, warum SkipWhile das letzte Element nicht überspringt? Und kann jemand vorschlagen, welche LINQ-Operator kann ich verwenden, um die "3" aus der obigen Sequenz zu entfernen?