C# 多参数Linq查询

C# 多参数Linq查询,c#,linq,C#,Linq,以下代码给出的数字的名称小于其值。我无法理解LINQ是如何理解索引应该是元素的数组索引的。谁能给我解释一下 string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; var shortDigits = digits.Where((digit, index) => digit.Length <

以下代码给出的数字的名称小于其值。我无法理解LINQ是如何理解索引应该是元素的数组索引的。谁能给我解释一下

 string[] digits = { "zero", "one", "two", "three", "four", 
                     "five", "six", "seven", "eight", "nine" };

 var shortDigits = digits.Where((digit, index) => digit.Length < index);
string[]位={“零”、“一”、“二”、“三”、“四”,
“五”、“六”、“七”、“八”、“九”};
var shortDigits=数字。其中((数字,索引)=>数字。长度<索引);
我无法理解linq是如何理解索引应该是元素的数组索引的

它总是在呼唤。这就是超负荷的全部目的

谓词的文档中
参数:

用于测试每个源元素的条件的函数;函数的第二个参数表示源元素的索引


这背后没有魔力。
的这个特定重载在内部执行如下操作:

var index = 0;
foreach (var item in collection)
{
    if (predicate(item, index++)) {
        yield return item;
    }
}

其中,
谓词
是您要传递的lambda,
集合
是数字数组。

我不确定我是否理解这个问题,但似乎您描述的是一个巧合,如果更改数组中的字符串,可能会显得不太理解。