C# IEnumberable & IQueryable & IList区别

using (EFDbContext db = new EFDbContext())
            {

                //IQueryable 属于延时查询,使用时才会执行

                //当你希望查询后的结果可以供调用者(Consummer)作后续查询(比如这是一个"GetAll"的方法),
                //或者你希望该查询延时执行,使用AsQueryable()
                IQueryable<UserProfile> classesIQue = (from u in db.UserProfiles select u).AsQueryable<UserProfile>();

                //当从数据库中查询数据,IQueryable在服务器端根据所有的filter条件执行查询操作,
                //因此该操作需要更少的工作而运行快。
                UserProfile user = (from s in classesIQue where s.ID == 2 select s).FirstOrDefault<UserProfile>();

                //IList<UserProfile> name=classesIlist = (from u in db.UserProfiles select u).ToList()
                //当你打算马上使用查询后的结果(比如循环作逻辑处理或者填充到一个table/grid中),
                //并且你不介意该查询会即时执行,使用ToList()->IList<>;非延时查询


                //IEnumerable 属于延时查询,使用时才会执行
                IEnumerable<UserProfile> classesIEue = (from u in db.UserProfiles select u).AsEnumerable<UserProfile>();

                //当从数据库中查询数据,IEnumberable在服务器端执行查询所有记录操作,下载所有数据到客户端的内存中,
                //然后再筛选数据,因此这个操作需要更多的工作而变得缓慢。
                UserProfile users = (from s in classesIEue where s.ID == 2 select s).FirstOrDefault();

                
            }

 

posted on 2017-07-22 19:01  LarvaAndQing  阅读(246)  评论(0编辑  收藏  举报

导航