C#的IEnumerable和IQueryable两接口的区别

https://zhuanlan.zhihu.com/p/237238859

所以通过上面的两个测试得出结论:

(1)所有对于IEnumerable的过滤、排序、分组、聚合等操作,都是在内存中进行的。也就是说把所有的数据不管用不用得到,都从数据库倒入内存中,只是在内存中进行过滤和排序操作,但性能很高,空间换时间,用于操作本地数据源。

(2)所有对于IQueryable的过滤、排序、分组、聚合等操作,只有在数据真正用到的时候才会到数据库中查询,以及只把需要的数据筛选到内存中。Linq to SQL引擎会把表达式树转化成相应的SQL在数据库中执行,这也是Linq的延迟加载核心思想所在,在很复杂的操作下可能比较慢了,时间换空间。

(3)操作本地数据源用IEnumerable,操作远程数据源用IQueryable
---------2022-04-30---------
表达式目录树暂时还是心病,先放这里

表达式目录树的文章:https://masuit.com/170?t=up1wwkns66tc

posted @ 2022-04-28 23:02  rookiexwang  阅读(54)  评论(0编辑  收藏  举报