MVC中一般为什么用IQueryable而不是用IList
2014-12-09 14:51
267 查看
IList(IList<T>)会立即在内存里创建持久数据,这就没有实现“延期执行(deferred execution)”,如果被加载的实体有关联实体(associations),此关联实体不会被加载(既不立即加载,也不延迟加载)。 IQeurable(IQuerable<T>)不会立即在内存里创建持久数据,只有遍历它(如通过foreach)、把它转换成List等情况下才会向内存加载数据,它可以实现“延期执行”,如果当前被加载的实体有关联实体(associations),此关联实体可被接下来的访问加载。 看下面一段代码: //IList的情况 IList users = res.ToList(); //此时已把users加载到内存,而每个user的关联实体(UserInfos)未 //被加载,所以下一行代码无法顺利通过 var ss = users.Where(p => p.UserInfos.ID != 3); //此处报错,因为P的UserInfos实体无法被加载 // IQuerable的情况 IQueryable users = res.AsQueryable(); //users未被立即加载,关联实体可通过“延迟加载”获 //得 var ss = users.Where(p => p.UserInfos.ID != 3);//此处顺利获得对应的ss
相关文章推荐
- MVC中一般为什么用IQueryable而不是用IList
- MVC中一般为什么用IQueryable而不是用IList?用IQueryable比IList好在哪?
- 为什么 iOS 开发中,xib跟storyboard拖得控件一般为 weak 而不是 strong
- 为什么 iOS 开发中,xib跟storyboard拖得控件一般为 weak 而不是 strong
- IQueryable与IList差别之处
- java基础之为什么java的父类一般(不是必须)要写无参构造方法
- 为什么 iOS 开发中,控件一般为 weak 而不是 strong?
- Mysql为什么企业一般使用InnoDB引擎而不是使用效率更高的MyISAM引擎?
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- Entity Framework中使用IEnumerable<T>、IQueryable<T>及IList<T>的区别
- 为什么用于开关电源的开关管一般用MOS管而不是三极管
- 为什么用于开关电源的开关管一般用MOS管而不是三极管
- MVC中IQueryable与IList的区别?
- 为什么用例不是“功能”?
- Java编程细节重构之为什么if-else不是好代码详析
- 为什么要使用SLF4J而不是Log4J
- 为什么要使用SLF4J而不是Log4J
- atitit. java跟php的比较..为什么大企业喜欢java 而不是php
- 为什么我们使用Nginx而不是Apache