TakeWhile,至少n个元素

时间:2015-11-17 13:04:36

标签: c# linq

似乎没有e.TakeWhile(predicate, atLeastNElements)重载。是否有方便的方式来表达 TakeWhile,但是,如果有N个元素可用,则至少需要>= N个元素。

编辑:我想到的最好的方法是在TakeWhile的谓词中捕获一个int,并在返回true时将每个调用减少一个。仅在计数器降至零之后才使用实际谓词。

1 个答案:

答案 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));