【发布时间】:2017-04-17 05:23:39
【问题描述】:
有什么区别
Linq:var data=from a in context.object select a;
EF:var data=context.object().Tolist();
【问题讨论】:
-
那个链接不太好。
标签: c# entity-framework linq
有什么区别
Linq:var data=from a in context.object select a;
EF:var data=context.object().Tolist();
【问题讨论】:
标签: c# entity-framework linq
它们都是 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);
【讨论】:
在您的情况下,区别在于,在第一种情况下,数据将是惰性 IEnumerable 类型,并且将在枚举时执行。
第二个示例将集合枚举到列表中,并且在执行ToList 方法后集合将在内存中。
但我假设您对 LINQ 运算符(如 from、where、select 和方法 Where、Select 等)之间的区别感兴趣。因为运算符被编译为方法,所以没有区别。
【讨论】:
lazy IEnumerable 是什么,我认为您指的是延迟执行,IQueryable 也是如此,实际上这两种情况都是如此,只是在第二次调用 ToList() 时被调用
两种语法的区别是:
您的第一个查询是 LINQ to Sql,第二个查询是实体 SQL。
Entity SQL 由实体框架对象服务直接处理
Entity SQL 返回 ObjectQuery 而不是 IQueryable
【讨论】:
您的意思是了解实体框架中查询语法的各种差异。
Basics of LINQ & Lamda Expressions
LINQ
Linq 是微软首次尝试将查询集成到语言中。我们知道,从 sql 对象中查找数据非常容易,只需编写一个查询,而当我们想在 DataTable 或 Lists 中做同样的事情时它有点忙。通常,我们必须遍历每个元素以找到精确匹配,如果有一些聚合我们需要聚合值等。Linq 提供了一种简单的方法来编写可以与内存对象一起运行的查询。
lambda 表达式是一个匿名函数,可用于创建委托或表达式树类型。通过使用 lambda 表达式,您可以编写可以作为参数传递或作为函数调用的值返回的局部函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。
希望对你有帮助。
【讨论】: