Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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