LINQ — SkipWhile сломан? ⇐ 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» из приведенной выше последовательности?
Я немного удивлен, обнаружив результаты следующего кода, в котором я просто хочу удалить все тройки из последовательности целых чисел:
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» из приведенной выше последовательности?
Мобильная версия