我从Marc Gravell (@MarcGravell)的回答中读到了以下内容: https://dev59.com/DlYN5IYBdhLWcg3wO14v#47790712
最后一行说:
作为代码的小优化:在避免创建副本的情况下,优先使用AsList()而不是ToList()。
该语句是关于QueryMultiple()
返回GridReader
的。
据我理解,System.Linq
提供了一个扩展方法IEnumerable.ToList()
。以下是Microsoft关于ToList()
的说明。
ToList(IEnumerable)方法强制立即查询评估并返回包含查询结果的List。您可以将此方法附加到查询中,以获取查询结果的缓存副本。
IDbConnection.Query()
将始终返回IEnumerable
或null
。在调用代码中可以轻松进行空值检查。那么AsList
有什么区别呢?
如果我的理解是正确的,AsList
将始终在内部调用ToList
,这将创建一个副本。
考虑到这一点,AsList()
是否比ToList()
更适用于返回IEnumerable
的IDbConnection.Query()
?如果是; 为什么?
AsList()
在内部做了什么,使它在这种情况下成为更好的选择?
List
数据结构中,那么该列表(即实例)将被返回,而不是创建一个新的(即副本)List
。 - Kenneth K.IDbConnection.Query()
将始终返回IEnumerable
或null
。在调用代码中可以轻松进行空值检查。那么AsList
有什么区别呢? - Amit Joshi