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
越是无知的人越是觉得自己无所不知(之前的自己)
越是学习的人越是觉得自己会的太少了(现在的自己)
共勉