在LINQ中,"(n,index)=> n> = index"是什么意思?

Nit*_*ant 1 c# linq lambda

我正在学习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表达式可以采用多少个参数?如何决定在我的代码中写入的参数数量?

Tho*_*que 5

(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在满足此谓词时将继续生成项.