IEnumerable 和 IQueryable

IEnumerable 是内存的操作,在内存里执行Linq操作(客户端评估)。

IQueryable 是分析预生成SQL语句,最后在数据库里执行(服务器端评估)。

IQueryable 遇到终结操作:遍历(真正需要取数据操作时),ToList,ToArray,Count,Max,Min等操作时,就会立即执行,将数据查询到内存里。

             非终结操作: GroupBy,OrderBy。

可以通过这些方法的返回对象是 IEnumerable 还是 IQueryable  来确定SQL语句是否执行。

Part3-23:EF Core有了IEnumerable还要IQueryable干什么_哔哩哔哩_bilibili

 

EF执行SQL语句查询时,如果是 IQueryable 这种结果的查询,底层用的是DataReader读取,不是把数据全读取到内存,这样会耗费数据库链接,减少内存占用

如果遇到终结操作则会直接全查到内存里。

Part3-28:IQueryable是一次性把数据都加载到内存吗_哔哩哔哩_bilibili

 

posted @ 2022-07-24 22:25  百年俊少  阅读(245)  评论(0编辑  收藏  举报