暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

图解EF中IEnumerable,IQueryable ,Include使用

DotNet开发跳槽 2021-07-22
1094

使用IQueryable

       using (var db = new CentaStaffEntities())
{
IQueryable<Staff> queryablestaffs = db.Staff.AsQueryable().OrderBy(p=>p.StaffID).Skip(3).Take(3);
foreach (var item in queryablestaffs)
{
Console.WriteLine(item.CnName);
}
}

 

 

使用IEnumerable

     using (var db = new CentaStaffEntities())
    {
    IEnumerable<Staff> enumerablestaffs = db.Staff.AsEnumerable().OrderBy(p => p.StaffID).Skip(3).Take(3);
    foreach (var item in enumerablestaffs)
    {
    Console.WriteLine(item.CnName);
    }
    }


     

    IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

    参考:http://www.cnblogs.com/ambon/articles/4766924.html

     

    Include(),两表必须含有外键关系,只需要指定键名对应的类属性名即可,不需指定结果字段(即全部映射)。默认搜索某表时,不会顺带查询外键表,直到真正使用时才会再读取数据库查询;若是使用 Include(),则会在读取本表时把指定的外键表信息也读出来。

       using (var db = new TestEntities())
      {
      IEnumerable<Student> enumerablestaffs = db.Student;
      foreach (var item in enumerablestaffs)
      {
      //每次都会获取
      Console.WriteLine(item.Class.Name);
      }
      }

       

       

      Include

                    using (var db = new TestEntities())
        {
        //预加载关联表 前提必须有主外键关系
        IEnumerable<Student> enumerablestaffs = db.Student.Include("Class");
        //只查询一次
        foreach (var item in enumerablestaffs)
        {
        Console.WriteLine(item.Class.Name);
        }
        }


        Left join

         

        作者:释迦苦僧
        出处:http://www.cnblogs.com/woxpp


        版权申明:本文来源于网友收集或网友提供,如果有侵权,请转告版主或者留言,本公众号立即删除。


        支持小微:

        腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。

        轻量  1C2G6M 60GB SSD盘297元/3年

        链接:https://curl.qcloud.com/bR8ycXZa



        右下角,您点一下在看图片

        小微工资涨1毛

        商务合作QQ:185601686



        文章转载自DotNet开发跳槽,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论