【发布时间】:2021-07-20 09:49:08
【问题描述】:
我正在尝试更详细地了解Enumerable.Where 方法的使用。尽管我已经了解了许多细节,包括 lambda 表达式、委托、谓词等的使用,但有些事情对我来说毫无意义,我将不胜感激。
首先我指的是下面链接中的解释:
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.where?view=net-5.0
在上面的网页中,他们有以下代码示例:
int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };
IEnumerable<int> query =
numbers.Where((number, index) => number <= index * 10);
foreach (int number in query)
{
Console.WriteLine(number);
}
/*
This code produces the following output:
0
20
15
40
*/
我的问题是:
-
参数“number”和“index”在哪里定义?我知道 Where 中的“数字”与 foreach 语句中的“数字”不同。
-
为什么
Where里面的参数“number”可以改名,但不能改“index”的名字? -
为什么这段代码会产生输出 0、20、15、40?我知道索引是从 0 到 7。
-
“number
感谢您的关注和支持。
【问题讨论】:
-
2 号没有意义。您尝试将其更改为什么?
-
将行改为“numbers.Where((myparameter, index) => myparameter
-
那个works for me。也许您已经在代码中的其他地方声明了
myparameter的其他内容,并且在您声明 lambda 时处于范围内? -
您在尝试重命名索引时收到的确切错误消息是什么?
标签: c# .net where-clause enumerable