C# Lambda-Linq转换
我知道有一个简单的lambda查询C# Lambda-Linq转换,c#,linq,lambda,C#,Linq,Lambda,我知道有一个简单的lambda查询(不确定这个查询是否调用了查询) 我有一个问题,因为我对lambda一无所知。=>的用途是什么?如果转换为linq,linq中的值是多少 就我的基本知识而言,这可能是转换后的linq查询 var person = (from p in db.Person where p.PersonId == id select p).FirstOrDefault(); 是吗?The=>是lambda运算符,是lambda表达式语法的一部分 =>左侧是=>右侧表达式的输入参数
(不确定这个查询是否调用了查询)
我有一个问题,因为我对lambda一无所知。=>
的用途是什么?如果转换为linq,linq中的值是多少
就我的基本知识而言,这可能是转换后的linq查询
var person = (from p in db.Person where p.PersonId == id select p).FirstOrDefault();
是吗?The=>是lambda运算符,是lambda表达式语法的一部分 =>左侧是=>右侧表达式的输入参数
a=> a.PersonId == id
类似于接受person对象和Id并返回布尔值的函数,即
bool CheckIfIdIsEqual(Person a, int id) {
return a.PersonId == id;
}
是的,你说得对。使用
=>
运算符的表达式称为lambda表达式
在lambda演算中,我们将这些模式描述为小函数。在C语言中,我们使用lambda函数和=>运算符来转换数据
var person = db.People.Where(a => a.PersonId == id).FirstOrDefault();
在上面的代码中,我们使用变量a
有关更多信息,您可以参考:
可以作为映射读取或映射到的
=>
属于labda表达式的语法。非正式地说,lambda表达式的语法是
(arg_1, arg_2, ..., arg_n) => rhs,
其中,(arg-1,arg_2,…,arg_n)
是参数列表;如果有一个参数,列表(arg1)
可以缩写为arg1
rhs
是所需返回类型的表达式,例如
x => x * x
或返回所需类型的复合语句,如下所示
x =>
{
return x * x;
}
lambda表达式的参数和返回类型不是显式定义的,而是在编译时推导的。总共
a => a.PersonId == id
定义一个函数,该函数将一个人的
a
映射为一个布尔值,该布尔值是通过计算a.PersonId==id
生成的,这意味着返回值是true
当且仅当该人的PersonId
等于id时,两者的可能重复项是linq。顶部称为方法语法,底部称为查询语法
a => a.PersonId == id