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

时间:2019-04-26 07:41:35

标签: c# linq

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

TIMESTAMP_FORMAT(ivdat8,'YYYYMMDD')

这将创建一个整数10到19的数组。

对于一些现实生活中的问题,我需要使用原始数据的索引。

经过研究,我发现我可以做类似的事情

var arrayIndex = Enumerable.Range(10, 10).ToArray();

我知道我是物品本身,在这种情况下,我将是整数。

所以,只有两个问题

  1. 我怎么知道可以放在方括号内的参数的完整列表(如索引)。

  2. 在方括号中具有不同参数的另一个用例是什么。

2 个答案:

答案 0 :(得分:0)

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

enter image description here

答案 1 :(得分:0)

Select ...

中的部分
(i, Index) => i * Index

...是lambda表达式,等效于匿名方法。如果您将以非匿名方式编写该方法,则它将看起来像这样:

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

当您要将方法作为参数传递时,相应的参数需要是与方法签名匹配的委托。给定的Calculate网络方法,并且由于它们共享相同的签名,因此您的lambda表达式与Func<int, int, int> delegate的签名者匹配。事实证明,Enumerable.Select<int, int>为您提供了an overload with exactly this delegate,因此您可以使用lambda表达式。另一个(使用更广泛的)重载接受Func<int, int>,即没有索引的版本。没有其他重载,因此您的lambda表达式中不能包含其他参数。