C# Linq和EF语法之间有什么区别?
两者的区别是什么 Linq:C# Linq和EF语法之间有什么区别?,c#,entity-framework,linq,C#,Entity Framework,Linq,两者的区别是什么 Linq:var data=来自上下文中的对象。选择一个 EF:var data=context.object().Tolist()在您的情况下,不同之处在于,在第一种情况下,数据将是惰性的IEnumerable类型,并且将在枚举它时执行 第二个示例将向列表枚举集合,执行ToList方法后,集合将在内存中 但我假设您对LINQ操作符之间的差异感兴趣,如from,where,select和methodwhere,select,等等。当操作符被编译为方法时,这两种语法之间的差异是:
var data=来自上下文中的对象。选择一个代码>
EF:var data=context.object().Tolist()代码>在您的情况下,不同之处在于,在第一种情况下,数据将是惰性的IEnumerable
类型,并且将在枚举它时执行
第二个示例将向列表枚举集合,执行ToList
方法后,集合将在内存中
但我假设您对LINQ操作符之间的差异感兴趣,如from
,where
,select
和methodwhere
,select
,等等。当操作符被编译为方法时,这两种语法之间的差异是:
- 第一个查询是LINQtoSQL,第二个查询是实体Sql
- 实体SQL由实体框架对象服务直接处理
- 实体SQL返回ObjectQuery而不是IQueryable
您的意思是了解实体框架中查询语法的差异
LINQ
Linq是微软首次尝试将查询集成到语言中。我们知道,只需编写一个查询,就可以很容易地从sql对象中查找数据,而当我们想在数据表或列表中执行相同的操作时,则会有点忙。通常,我们必须循环遍历每个元素以找到精确的匹配项,如果存在聚合,我们需要聚合值等。Linq提供了一种编写查询的简单方法,可以与内存中的对象一起运行
lambda表达式是一个匿名函数,可用于创建委托或表达式树类型。通过使用lambda表达式,您可以编写可以作为参数传递或作为函数调用值返回的本地函数。Lambda表达式对于编写LINQ查询表达式特别有用
希望能有帮助。他们都是林肯
第一个是查询(表达式)语法
IEnumerable numQuery1=
从num开始
其中num%2==0
orderby num
选择num;
另一个是方法语法
IEnumerable numQuery2=数字
。其中(num=>num%2==0)
.OrderBy(n=>n);
资料来源:是的,安德烈,我的困惑是我们对EF有两种语法一种是linq,另一种是EF-it-self,所以我很困惑,什么时候使用哪一种?@Kinnal,选择你最喜欢的。它们在运行时是相同的。就我个人而言,我更喜欢方法调用链方法。@Kinnal-这不是“ef it self”,而是两种不同的语法,仅此而已。你喜欢用哪一种都行。LINQ或Lambda。@Phill都是LINQ查询,可以是查询,也可以是流畅语法。在我看来,仅仅称一个Linq是令人困惑的。Lambda是Linq Fluent语法不可或缺的一部分。@AndriiLitvinov什么是lazy IEnumerable
,我想你指的是延迟执行,这也是IQueryable的情况,事实上这两种情况都是这样,就在第二次调用ToList()中
被调用该链接不太好。他的问题是关于LINQ vs Lambda语法。为什么第一个调用不是EF调用,他只是访问db contextLambda是LINQ fluent语法不可分割的一部分,所以提供的定义确实有误导性