Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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和EF语法之间有什么区别?_C#_Entity Framework_Linq - Fatal编程技术网

C# Linq和EF语法之间有什么区别?

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,等等。当操作符被编译为方法时,这两种语法之间的差异是:

两者的区别是什么

Linq:
var data=来自上下文中的对象。选择一个


EF:
var data=context.object().Tolist()

在您的情况下,不同之处在于,在第一种情况下,数据将是惰性的
IEnumerable
类型,并且将在枚举它时执行

第二个示例将向列表枚举集合,执行
ToList
方法后,集合将在内存中


但我假设您对LINQ操作符之间的差异感兴趣,如
from
where
select
和method
where
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语法不可分割的一部分,所以提供的定义确实有误导性