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) 编辑 收藏 举报