EF下怎么理解IEnumerable/ICollection/IQueryable?
2021-02-12 14:21
阅读:486
- ICollection 的扩展,支持IEnumerable 和ICollection的所有操作
- 支持更多列表项操作,如列表中插入和删除元素
- 适合在方法体中做一些中间操作
IQueryable
- 支持
LINQ to SQL
表达式查询,作用于数据库级别 - 示例:
var wantedP = from p in Parts where p.CanOperate==true select p;
- 适合对Grid的各种查询排序等
一般返回数据集合是用IEnumerable还是EQueryable呢?
IQueryable继承自IEnumerable,所以对于数据遍历来说,它们没有区别。
但是IQueryable的优势是它有表达式树,所有对于IQueryable的过滤,排序等操作,都会先缓存到表达式树中,只有当真正遍历发生的时候,才会将表达式树由IQueryProvider执行获取数据操作。
而使用IEnumerable,所有对于IEnumerable的过滤,排序等操作,都是在内存中发生的。也就是说数据已经从数据库中获取到了内存中,只是在内存中进行过滤和排序操作。
所以在数据较多的情况下或者操作比较复杂的情况下,IEnumerable的效率会比IQueryable低很多,返回的结果集可以是IEnumerable(此结果集也应该是经过IQueryable各种组合后所得来的)
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:EF下怎么理解IEnumerable/ICollection/IQueryable?
文章链接:http://soscw.com/index.php/essay/54483.html
文章标题:EF下怎么理解IEnumerable/ICollection/IQueryable?
文章链接:http://soscw.com/index.php/essay/54483.html
评论
亲,登录后才可以留言!