1. IEnumerable<T>

  IEnumerable<T> :对于在内存中集合上运行的方法,返回的可枚举对象将捕获传递到方法的参数。在枚举该对象时,将使用查询运算符的逻辑,并返回查询结果。

  IEnumerable<T>在.Net2.0引入。

  IEnumberable使用的是LINQ to Object方式,将AsEnumerable()时对应的所有记录先加载到内存,再在此基础上再执行后面的Query。

  本地数据源用IEnumerable<T>,并且查询的逻辑可以直接用你所定义的方法的逻辑。

using (PortalContext context = new PortalContext())
{
// 延迟执行
IEnumerable<Category> expr = (from c in context.Categories
select c).AsEnumerable().Take(); foreach (var item in expr)
{
Console.WriteLine(item.CategoryName);
}
}

  执行的SQL语句:

SELECT
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[CategoryName] AS [CategoryName]
FROM [dbo].[Category] AS [Extent1]

  IEnumerable<T>是延时执行(Deferred Execution)。

2. IQueryable<T>

  IQueryable <T> :不会实现任何查询行为,但会生成一个表示要执行的查询的表达式树。查询处理由源 IQueryable<T> 对象处理。

  IQueryable <T>在.Net支持Linq引入。

  远程数据源用IQueryable<T>,无法直接使用你所定义的方法的逻辑,必须先生成表达式树,查询由源对象处理。

using (PortalContext context = new PortalContext())
{
// 延迟执行
IQueryable<Category> expr = (from c in context.Categories
select c).Take(); foreach (var item in expr)
{
Console.WriteLine(item.CategoryName);
}
}

  执行的SQL语句:

SELECT TOP (5)
[c].[CategoryID] AS [CategoryID],
[c].[CategoryName] AS [CategoryName]
FROM [dbo].[Category] AS [c]

  以上实例中,IQueryable<T>查询使用了LINQ to Sql的处理方式,在远处数据库中查询数据。

  IQueryable<T>是延时执行(Deferred Execution)。

3. IList<T>

  IList是即时执行(Eager Execution)

using (PortalContext context = new PortalContext())
{
// 即时执行
IList<Category> expr = (from c in context.Categories
select c).Take().ToList();
}

  执行的SQL语句:

SELECT TOP (5)
[c].[CategoryID] AS [CategoryID],
[c].[CategoryName] AS [CategoryName]
FROM [dbo].[Category] AS [c]

最新文章

  1. CSS样式之优先级
  2. SAP采购订单历史明细报表源代码(自己收藏)
  3. Vs程序自动获取windows7/vista系统管理员权限
  4. Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项
  5. ACE的包装器
  6. 《Programming WPF》翻译 第3章 3.内嵌控件
  7. 解决struts2配置文件没有提示的问题
  8. UVA 12545 Bits Equalizer
  9. (转)cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
  10. xml 和json 数据格式及解析
  11. 如何添加“在这里打开PowerShell”到Windows中的上下文菜单
  12. [Swift]LeetCode950. 按递增顺序显示卡牌 | Reveal Cards In Increasing Order
  13. HDU 6114 Chess【逆元+组合数】(组合数模板题)
  14. Hibernate 和 MyBatis 的区别
  15. encodeURI、encodeURIComponent
  16. Win10系列:UWP界面布局基础12
  17. [UE4]游戏主循环
  18. javax.servlet不存在问题的解决
  19. 【转载】IntelliJ IDEA 2017常用快捷键
  20. Codeforces Round #350 (Div. 2) B

热门文章

  1. Ajax及跨域
  2. 哪种缓存效果高?开源一个简单的缓存组件j2cache
  3. 参考bootstrap中的popover.js的css画消息弹框
  4. 如何在网页中提取Email地址
  5. 为IEnumerable&lt;T&gt;添加RemoveAll&lt;IEnumerable&lt;T&gt;&gt;扩展方法--高性能篇
  6. 「译」JUnit 5 系列:条件测试
  7. cesium核心类Viewer简介
  8. Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder
  9. Storm介绍(一)
  10. Hyper-V上运行的Linux虚拟机验证是否安装了集成服务