Почему SkipWhile не пропускает ожидаемый элемент?C#

Место общения программистов C#
Anonymous
Почему SkipWhile не пропускает ожидаемый элемент?

Сообщение Anonymous »

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

Код: Выделить всё

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 }
Иными словами,
  • Except удаляет 3, но также
    удаляет неразличимые элементы. Грр.
  • SkipWhile не пропускает последний
    элемент, даже если он соответствует
    условию. Грр.
Может кто-нибудь объяснить, почему SkipWhile не пропускает последний элемент? И может ли кто-нибудь подсказать, какой оператор LINQ я могу использовать, чтобы удалить цифру «3» из приведенной выше последовательности?

Подробнее здесь: https://stackoverflow.com/questions/252 ... ed-element

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