LINQ - 跳过一段时间出现问题了吗?

26 浏览
0 Comments

LINQ - 跳过一段时间出现问题了吗?

我对以下代码的结果感到有些惊讶,我只是想从一系列整数中删除所有的3:

var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // 噢不!返回 { 1, 1, 2, 3 }

为什么3没有被跳过呢?

我接下来的想法是,好吧,Except操作符会解决问题:

var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // 噢不!返回 { 1, 2 }

总结一下,

  • Except除了移除3之外,还移除了非唯一的元素。烦人。
  • SkipWhile即使最后一个元素符合条件,也不会跳过。烦人。

有人能解释一下为什么SkipWhile不会跳过最后一个元素吗?还有谁能建议我使用哪个LINQ操作符来从上述序列中删除“3”?

0