是否必须在使用LINQ时使用lambda表达式,或lambda表达式是否可选?
在lambda表达式中,=>始终使用符号.这是什么意思?
customers.Where(c => c.City == "London");
Run Code Online (Sandbox Code Playgroud)
这c =>是使用但为什么?使用什么样的意思c =>.请详细讨论因为我不懂lambda.
Jon*_*eet 11
不,你不具备使用lambda表达式.例如,您的Where示例可以写为:
private static bool IsLondon(Customer customer)
{
return customer.City == "London";
}
...
var londoners = customers.Where(IsLondon);
Run Code Online (Sandbox Code Playgroud)
当然,这是假设LINQ to Objects.对于LINQ to SQL等,您需要构建表达式树.
至于为什么"=>"总是在lambda表达式中使用,那只是因为这就是运算符的编写方式 - 就像问为什么"+"用于加法一样.
的"C => ..."被有效地赋予λ表达式一个lambda表达式参数称为c...在这种情况下一般类型推理提供类型的c.正文提供要执行的操作或某些计算以返回基于的值c.
lambda表达式的完整描述超出了本答案的范围.然而,作为我书的明显插件,它们在深度C#的第9章中有详细介绍.
lambda表达式
c => c.City == "London"
Run Code Online (Sandbox Code Playgroud)
是类似的简写
bool IsCustomerInLondon(Customer c)
{
return (c.City == "London");
}
Run Code Online (Sandbox Code Playgroud)
这只是编写一个返回值的简单函数的一种非常简洁的方法.它被称为"匿名函数",因为它从未被赋予名称或正式定义(参数类型和返回类型是从上下文中推断出来的).
(实际上,它不仅仅是简写; lambda表达式与其他一些称为闭包的构造有关,这些构造非常酷且功能强大.)
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |