LINQ — SkipWhile сломан?C#

Место общения программистов C#
Гость
LINQ — SkipWhile сломан?

Сообщение Гость »


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

var последовательность = новый [] { 1, 1, 2, 3 }; результат вар = последовательность.SkipWhile(i => я == 3); // О нет! Возвращает { 1, 1, 2, 3 } Почему не пропускается 3?

Моей следующей мыслью было: ОК, оператор Except сделает свое дело:

var последовательность = новый [] { 1, 1, 2, 3 }; результат вар = последовательность.Except(i => я == 3); // О нет! Возвращает { 1, 2 } Подводя итог,
[*]За исключением удаления 3, но также удаляет неразличимые элементы. Грр. [*]SkipWhile не пропускает последнее элемент, даже если он соответствует состояние. Грр.
Может кто-нибудь объяснить, почему SkipWhile не пропускает последний элемент? И может ли кто-нибудь подсказать, какой оператор LINQ я могу использовать, чтобы удалить цифру «3» из приведенной выше последовательности?

Вернуться в «C#»