C# TakeWhile,至少有n个元素

C# TakeWhile,至少有n个元素,c#,linq,C#,Linq,似乎没有e.TakeWhile(谓词,至少元素)重载。是否有一种方便的方式来表达接受,而如果有>=N元素可用,则至少接受N元素 编辑:我脑海中想到的最好的方法是在TakeWhile的谓词中捕获一个int,并在返回true时将其每调用减少一次。实际谓词仅在计数器降至零后使用。您可以使用重载将当前元素的索引设置为TakeWhile: var e = new [] { 1, 2, 3, 4, 5 }; var n = 3; // at least n e.TakeWhile((element, ind

似乎没有
e.TakeWhile(谓词,至少元素)
重载。是否有一种方便的方式来表达
接受,而
如果有
>=N
元素可用,则至少接受
N
元素


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

您可以使用重载将当前元素的索引设置为
TakeWhile

var e = new [] { 1, 2, 3, 4, 5 };
var n = 3; // at least n
e.TakeWhile((element, index) => index < n || predicate(element));
vare=new[]{1,2,3,4,5};
变量n=3;//至少
e、 TakeWhile((元素,索引)=>index
你的意思是
<3
(即索引0、1和2),而lambda表达式参数的计算方法是错误的-它应该是
(值、索引)
-但是,是的,基本上就是这样。很好!这比我的计数器变量好。喜欢!(你可以在11分钟内接受答案……为什么,为什么?)是的,我的意思是
<3
。我把答案改进了一点。@AlexM。不,这至少不需要n个元素。将问题推广到n个元素,勾勒出我的解决方案想法。