Linq和EF语法有什么区别?

时间:2017-04-17 05:23:39

标签: c# entity-framework linq

的区别是什么

Linq:var data=from a in context.object select a;

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

4 个答案:

答案 0 :(得分:3)

他们都是LINQ。

第一个是查询(表达式)语法 IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num select num;

另一个是方法语法 IEnumerable<int> numQuery2 = numbers .Where(num => num % 2 == 0) .OrderBy(n => n);

来源:MSDN: Query Syntax and Method Syntax in LINQ (C#)

答案 1 :(得分:0)

在您的情况下,区别在于,在第一种情况下,数据将是惰性IEnumerable类型,并且将在枚举时执行。

第二个示例将枚举对列表的收集,并且在执行ToList方法后,集合将在内存中。

但我认为您对LINQ运算符(如fromwhereselect和方法WhereSelect等之间的差异感兴趣。运算符编译为方法时没有区别。

答案 2 :(得分:0)

两种语法之间的区别是

  • 您的第一个查询是LINQ to Sql,第二个查询是实体SQL。

  • 实体SQL由实体框架对象服务直接处理

  • 实体SQL返回ObjectQuery而不是IQueryable

答案 3 :(得分:0)

您的意思是了解实体框架中查询语法的差异。

<强> Basics of LINQ & Lamda Expressions

LINQ

Linq是微软首次尝试将查询集成到语言中。我们知道,当我们想要在DataTable或列表中执行相同的操作时,很容易从sql对象中简单地编写查询来查找数据。通常我们必须遍历每个元素以找到完全匹配,如果有一些聚合我们需要聚合值等.Linq提供了一种简单的方法来编写可以与内存对象一起运行的查询。

<强> Lamda

lambda表达式是一个匿名函数,可用于创建委托或表达式树类型。通过使用lambda表达式,您可以编写可以作为参数传递或作为函数调用的值返回的本地函数。 Lambda表达式对于编写LINQ查询表达式特别有用。

希望它有所帮助。