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# Lambda-Linq转换_C#_Linq_Lambda - Fatal编程技术网

C# Lambda-Linq转换

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查询
(不确定这个查询是否调用了查询)

我有一个问题,因为我对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