LINQ查询 AsEnumerable、AsQueryable、ToList

查询

AsEnumerable()
将一个序列向上转换为一个IEnumerable,延时执行,不构建不用的中间结果,在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了。 Linq to object。
常用于从任何IQueryable切换到Linq To objects。但不能滥用,容易出现冗余数据。

AsQueryable()
将一个序列向下转换为一个IQueryable,生成了一个本地查询的包装,LINQ TO SQL(方法表达式翻译成T-SQL语句之后最后再向SQL服务器发送命令),查询比较高效。
常用于使可枚举集合接受LINQ语句的表达式。

ToList()
立即执行,查询结果加载到到内存中,断开数据库连接。
常用于转换IEnumerable到List

性能调优

  1. 非必要查询太多。

  2. 数据表缺少必要的索引。
    聚集索引等。

  3. 耗时较大的操作考虑重构为异步。

posted @ 2020-10-21 16:37  wesson2019  阅读(370)  评论(0编辑  收藏  举报