MVC Core IEnumerable优于IQueryable

时间:2018-03-27 02:22:07

标签: asp.net-core ienumerable iqueryable

如果IQueryable具有IEnumerable的所有功能,但允许其他功能,为什么甚至使用IEnumerable?

IEnumerable比IQueryable有什么好处?

在这里阅读所有内容,仍然无法找到好处:

What is the difference between IQueryable and IEnumerable?

IEnumerable Vs IQueryable

1 个答案:

答案 0 :(得分:1)

注意2点

  1. IEnumerable<>只定义了一个GetEnumerator()方法,这意味着在.NET程序中立即枚举(执行查询)。并且IQueryable<>有表达式和查询提供程序,这意味着IQueryable<>只是IEnumerable<>的一个准备工作,必须通过调用GetEnumerator()作为普通IEnumerable<>来执行。完成外部查询后,将查询和结果返回给.NET程序)

  2. IEnumerable的{​​{1}} LINQ扩展方法接受Func<>(委托)参数,这些参数意味着在当前.NET程序中执行C#函数,但IQueryable需要Expression<Func<>>表示这些选择器或谓词的参数被密封为表达式,可能(实际上确实)被转换为外部命令,如SQL查询,不会被编译和执行为普通的C#代码。

  3. 许多IQueryable<>查询提供程序为其指定的操作扩展了其他查询函数。使用哪个取决于实际的查询目标。

  4. 结论,IEnumerable<>IQueryable<>有不同的用法,IEnumerable<>用于内部对象查询,IQueryable<>用于外部资源查询