我正在学习LINQ并在其中一本书中遇到以下代码:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstBigNumbers = numbers.TakeWhile((n,index)=>n>=index);
Run Code Online (Sandbox Code Playgroud)
什么是(n,index)?
我遇到过() =>,这意味着一个不带参数的lambda表达式.
现在的问题是:lambda表达式可以采用多少个参数?如何决定在我的代码中写入的参数数量?
(n, index)是lambda表达式的参数.在这种情况下,它们表示集合中的项目及其索引.这可以从TakeWhile方法的签名推断:
public static IEnumerable<TSource> TakeWhile<TSource>(
this IEnumerable<TSource> source,
Func<TSource, int, bool> predicate
)
Run Code Online (Sandbox Code Playgroud)
lambda表达式(n,index) => n >= index表示谓词:TakeWhile在满足此谓词时将继续生成项.