似乎没有e.TakeWhile(predicate, atLeastNElements)
重载。是否有方便的方式来表达 TakeWhile
,但是,如果有N
个元素可用,则至少需要>= N
个元素。?
编辑:我想到的最好的方法是在TakeWhile
的谓词中捕获一个int,并在返回true
时将每个调用减少一个。仅在计数器降至零之后才使用实际谓词。
答案 0 :(得分:3)
您可以使用当前元素索引的TakeWhile
重载:
var e = new [] { 1, 2, 3, 4, 5 };
var n = 3; // at least n
e.TakeWhile((element, index) => index < n || predicate(element));