Jud*_*ngo 27 c# linq linq-to-objects
我有点惊讶地发现以下代码的结果,我只想从一系列int中删除所有3:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 }
Run Code Online (Sandbox Code Playgroud)
为什么不跳过3?
我的下一个想法是,好吧,Except运算符可以解决这个问题:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // Oh noes! Returns { 1, 2 }
Run Code Online (Sandbox Code Playgroud)
综上所述,
有人可以解释为什么SkipWhile不会跳过最后一个元素吗?任何人都可以建议我可以用什么LINQ运算符从上面的序列中删除'3'?
Ahm*_*eed 57
它没有被打破.SkipWhile只会跳过开头的项目IEnumerable<T>.一旦不满足该条件,它将很乐意接受其余的元素.之后在路上匹配的其他元素将不会被跳过.
int[] sequence = { 3, 3, 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3);
// Result: 1, 1, 2, 3
Run Code Online (Sandbox Code Playgroud)
eri*_*len 19
var result = sequence.Where(i => i != 3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11548 次 |
| 最近记录: |