Я немного удивлен, увидев результаты следующего кода, где я просто хочу удалить все 3s из последовательности ints:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 }
Почему не пропущено 3?
Моя следующая мысль была, ОК, оператор Except сделает трюк:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // Oh noes! Returns { 1, 2 }
Таким образом,
- Кроме удаления 3, но также удаляет нечеткие элементы. Grr.
- SkipWhile не пропускает последние элемент, даже если он соответствует состояние. Grr.
Может кто-нибудь объяснить, почему SkipWhile не пропускает последний элемент? И может ли кто-нибудь предложить, какой оператор LINQ я могу использовать для удаления "3" из приведенной выше последовательности?