Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# Linq和Lambda的工作原理_C# - Fatal编程技术网

C# Linq和Lambda的工作原理

C# Linq和Lambda的工作原理,c#,C#,lambda表达式在内部是如何工作的?表达式树的作用是什么 还有linq是如何扩展到lambda和hereforth到表达式树的 。。。这是在一次采访中被问到的 如果有人知道,请分享 谢谢 lambda表达式是一个匿名函数,可以包含表达式和语句,并可用于创建委托或表达式树类型 你可以通过上的例子来了解它。我想你在问两件事: 什么是表达树;他们的目的是什么 C#编译器如何翻译“查询表达式” 如果是这样,那么我的Edulinq博客文章可能会有所帮助: 总之: 表达式树是lambda表达

lambda表达式在内部是如何工作的?表达式树的作用是什么

还有linq是如何扩展到lambda和hereforth到表达式树的

。。。这是在一次采访中被问到的

如果有人知道,请分享

谢谢

lambda表达式是一个匿名函数,可以包含表达式和语句,并可用于创建委托或表达式树类型


你可以通过上的例子来了解它。

我想你在问两件事:

  • 什么是表达树;他们的目的是什么
  • C#编译器如何翻译“查询表达式”
如果是这样,那么我的Edulinq博客文章可能会有所帮助:

总之:

  • 表达式树是lambda表达式的数据表示形式(通常,您也可以自己构造),因此可以通过LINQ to SQL之类的代码对其进行分析,并将其转换为SQL。Lambda表达式也可以转换为委托实例,这与任何其他委托实例一样-基本上您可以执行它们,但无法真正了解其中的逻辑细节
  • 查询表达式以一种相当简单的方式进行翻译,将“C#with Query expressions”翻译为“C#without Query expressions”,然后按正常方式编译。例如,查询:

    from person in people
    where person.Age > 18
    select person.Name
    
    翻译成

    people.Where(person => person.Age > 18)
          .Select(person => person.Name)
    

对C#lambda表达式的另外两个很好的介绍:


第一篇(免责声明-我的博客)将给你一个基本概念的快速解释。本书全面介绍了所有相关主题。

您还应在回答中区分编译委托的lambda表达式与实际为LambdaExpression表达式树(未编译)实例的lambda表达式@JeffN825:添加了lambda表达式也可以转换为委托。先生,这很好。。如果你能解释一下lambda是如何works@wanttolearn:“lambda如何工作”是一个相当模糊的问题。你到底是什么意思?你已经做了多少研究?如果你搜索“lambda expression C#”,你会得到很多点击率。。。