LINQ - SkipWhile сломан?

Я немного удивлен, обнаружив результаты следующего кода, где я просто хочу удалить все 3 из последовательности целых чисел:

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» из приведенной выше последовательности?

Ответы на вопрос(5)

Ваш ответ на вопрос