我有點驚訝地發現下面的代碼,在這裏我只是想從整數序列中刪除所有3S的結果:LINQ - 是SkipWhile破?
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 }
爲什麼不跳過3?
我的下一個想法是,確定,除了運營商將這樣的伎倆:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // Oh noes! Returns { 1, 2 }
綜上所述,
- 除了刪除3,但也 剔除沒有不同的元素。格兒。
- SkipWhile不會跳過最後一個 元素,即使它與 條件匹配。格兒。
有人可以解釋爲什麼SkipWhile不會跳過最後一個元素嗎?任何人都可以建議什麼LINQ運算符我可以用來從上面的序列中刪除'3'?
認爲它是SkipWhile(true)。所以,你的第一個條件(i == 3)失敗。所以,它變成了SkipWhile(false),接下來會發生什麼?它會返回剩餘的每個元素! – 2012-09-22 06:50:32