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个元素,勾勒出我的解决方案想法。