Linq to ...和Lambda表达式

时间:2012-06-27 09:59:12

标签: linq linq-to-sql c#-4.0 lambda linq-to-entities

我有一个很长时间困扰我的大问题,我似乎无法在任何地方得到一个直接的答案,我相信如果有人可以用权威回答这个问题并且有很好的例子,它会不仅帮助我,还帮助成千上万的开发人员。我想知道的是以下概念的特征是什么以及它们之间的区别

LINQ的

Linq to SQL

Linq to Entities

Linq to Objects

Lambda表达式

另外,特别是有人可以告诉我们这些结构属于上述类别

构建1

var result = from n in nums
             where n < 5
             orderby n
             select n;

构建2

Entities.Person.Where(p => p.FirstName == "John").First();

迫切期待您的学习澄清。

1 个答案:

答案 0 :(得分:3)

我确信这里有一些过度简化,但值得的是:

Linq 是专为处理数据集而设计的API。例如,IQueryable来自System.Linq命名空间。 Linq to ... 是不同的实现,它们解析相同的Linq指令,以根据数据的存储方式执行不同的操作。因此, Linq to SQL 将解析您的.Where指令以生成带有WHERE子句的SQL查询,而 Linq to Objects 将采用相同的指令并产生foreach

lambda表达式几乎是匿名委托的简写。您可以通过=>运算符识别lambda。您的参数列表位于=>的左侧,可以访问这些参数并可选择返回结果的表达式位于右侧。

您的两个代码示例是可以编写Linq查询的不同语法。它们分别称为查询语法和方法语法。