2015-11-17 107 views
2

似乎沒有e.TakeWhile(predicate, atLeastNElements)超負荷。是否有方便的方式來表達TakeWhile,但是,如果有>= N可用元素,則至少需要N元素。TakeWhile,至少有n個元素

編輯:我在腦海中想出的最好的方法是捕獲一個int在TakeWhile的謂詞中,並在返回true時減少一個呼叫。實際謂詞僅在計數器下降到零後才使用。

+0

到N個元素廣義的問題,勾勒我的解決方案的想法。 –

回答

3

您可以使用重載TakeWhile與當前元素的索引:

var e = new [] { 1, 2, 3, 4, 5 }; 
var n = 3; // at least n 
e.TakeWhile((element, index) => index < n || predicate(element)); 
+2

你的意思是'<3'(即索引0,1和2),並且你已經得到了lambda表達式參數 - 它應該是'(value,index)' - 但是,這基本上就是要走的路。 –

+0

固體!這比我的計數器變量要好。喜歡它! (您可以在11分鐘內接受答案...爲什麼如此,爲什麼?) –

+0

是的,我的意思是'<3'。 – Kvam

相關問題