我有一个很长时间困扰我的大问题,我似乎无法在任何地方得到一个直接的答案,我相信如果有人可以用权威回答这个问题并且有很好的例子,它会不仅帮助我,还帮助成千上万的开发人员。我想知道的是以下概念的特征是什么以及它们之间的区别
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();
迫切期待您的学习澄清。
答案 0 :(得分:3)
我确信这里有一些过度简化,但值得的是:
Linq 是专为处理数据集而设计的API。例如,IQueryable
来自System.Linq
命名空间。 Linq to ... 是不同的实现,它们解析相同的Linq指令,以根据数据的存储方式执行不同的操作。因此, Linq to SQL 将解析您的.Where
指令以生成带有WHERE
子句的SQL查询,而 Linq to Objects 将采用相同的指令并产生foreach
。
lambda表达式几乎是匿名委托的简写。您可以通过=>
运算符识别lambda。您的参数列表位于=>
的左侧,可以访问这些参数并可选择返回结果的表达式位于右侧。
您的两个代码示例是可以编写Linq查询的不同语法。它们分别称为查询语法和方法语法。