Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C关于选择参数的Linq问题_C#_Linq - Fatal编程技术网

C# C关于选择参数的Linq问题

C# C关于选择参数的Linq问题,c#,linq,C#,Linq,我对linq中的select方法有基本的了解 var arrayIndex = Enumerable.Range(10, 10).ToArray(); 这个将创建一个包含10到19个整数的数组 对于一些实际问题,我需要使用原始数据的索引 经过一些研究,我发现我可以做这样的事情 var multipliedArray = arrayIndex.Select((i, Index) => i * Index).ToArray(); 我知道我是项本身,在这种情况下,我将是整数 所以,只有两个问

我对linq中的select方法有基本的了解

var arrayIndex = Enumerable.Range(10, 10).ToArray();
这个将创建一个包含10到19个整数的数组

对于一些实际问题,我需要使用原始数据的索引

经过一些研究,我发现我可以做这样的事情

var multipliedArray = arrayIndex.Select((i, Index) => i * Index).ToArray();
我知道我是项本身,在这种情况下,我将是整数

所以,只有两个问题

我如何知道可以放在括号内的参数的完整列表,如索引

括号中有不同参数的另一个用例是什么


为了更好地理解,您可以参考或在开发环境中使用代码完成

选择中的零件

…是lambda表达式,相当于匿名方法。如果您以非匿名方式编写该方法,它将如下所示:

int Calculate(int i, int Index) {
    return i * Index;
}

如果要将方法作为参数传递,则相应的参数必须是与方法签名匹配的委托。给定的计算方法,由于它们共享相同的签名,因此lambda表达式与的签名者匹配。事实证明,Enumerable.select为您提供了,因此您可以使用lambda表达式。另一个更广泛使用的重载接受Func,这是没有索引的版本。没有其他重载,因此lambda表达式中不能有其他参数。

键入arrayIndex。选择并观察带有重载的弹出窗口?或者按F1键选择并直接读取?Select只有两个重载,一个有索引,另一个没有索引。看见
int Calculate(int i, int Index) {
    return i * Index;
}