zoukankan      html  css  js  c++  java
  • 经典集合 与 IQueryable集合 的差别

    经典集合 与 IQueryable集合 的差别

            经典集合与IQueryable 集合存在本质的区别,经典结合是在内存中开辟一片区域用来存储数据,而IQueryable集合是延迟加载的集合,只有在用到的时候才会到数据库中查询并且加载数据,下面来介绍IQueryable集合的实现机制。

          

    IQueryable 类型的内部构造:

    下面来看一条在EF中进行查询的语句:

    执行这条语句的以后,IQueryable<HKSJ_USERS> 类型的集合temp并没有数据,执行这条语句实际上做的事是:

    1、将linq语句解析成表达式树,保存到temp的Expression中;
    2、将HKSJ_USERS类型存到temp的ElementType中去;
    3、将EF的provider加载到temp的Provider中去。

     

    在我们遍历调用temp集合的时候,temp中的Provide就会解析temp中的Expression,得到sql语句,然后到数据库中查询数据并加载,这样看起来就好像temp中存有数据一样。

     

    有了对IQueryable集合的认识,我们学习linq的时候就会很方便了,其实linq to sql,linq to xml ,linq to object 的不同点就在于provider不同,也就是对表达式树的解析方式不同

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/key1309/p/3402534.html
Copyright © 2011-2022 走看看