【发布时间】:2018-09-05 07:17:25
【问题描述】:
如果 IQueryable 具有 IEnumerable 的所有功能,但允许附加功能,为什么还要使用 IEnumerable?
IEnumerable 与 IQueryable 相比有哪些优势?
在这里阅读所有内容,仍然找不到好处:
【问题讨论】:
标签: asp.net-core ienumerable iqueryable
如果 IQueryable 具有 IEnumerable 的所有功能,但允许附加功能,为什么还要使用 IEnumerable?
IEnumerable 与 IQueryable 相比有哪些优势?
在这里阅读所有内容,仍然找不到好处:
【问题讨论】:
标签: asp.net-core ienumerable iqueryable
注意2点
IEnumerable<> 只定义了一个方法GetEnumerator(),这意味着在.NET 程序中立即枚举(执行查询)。而IQueryable<> 有表达式和查询提供者,这意味着IQueryable<> 只是IEnumerable<> 的准备,它必须通过调用GetEnumerator() 作为正常的IEnumerable<> 来执行(将查询和结果发回.NET完成外部查询时的程序)
IEnumerable 的 LINQ 扩展方法采用 Func<>(delegates) 参数,表示要在当前 .NET 程序中执行的 C# 函数,但 IQueryable 采用 Expression<Func<>> 参数,表示这些选择器或谓词被密封为表达式,可能(实际上)被翻译成外部命令,例如 SQL 查询,而不是像普通的 C# 代码那样编译和执行。
许多IQueryable<> 查询提供程序为其指定的操作扩展了额外的查询功能。使用哪个取决于实际的查询目标。
结论,IEnumerable<>和IQueryable<>有不同的用法,IEnumerable<>用于内部对象查询,IQueryable<>用于外部资源查询
【讨论】: