gpt4 book ai didi

c# - 为什么 IQueryable 实现 IEnumerable?

转载 作者:太空狗 更新时间:2023-10-30 01:18:03 27 4
gpt4 key购买 nike

<分区>

我理解为什么存在 IQueryableIEnumerable,但我不清楚从 IEnumerable< 派生的 IQueryable 有什么好处.

我遇到的缺点之一:

  • 任何创建自己的 IEnumerable 扩展方法的人都可以很容易地意外地将看似无害的 IQueryable 查询转换为低效的 IEnumerable 调用。例如,使用 MoreLinq:

     Users.DistinctBy(u => u.Address).Where(u => u.Age >= 18)

(这将使用 IEnumerable.Where 而不是 IQueryable.Where 除非我错过了上面的 IQueryable 实现)

IQueryable 的工作方式,内部 Expression 被链式语句改变,似乎与链式函数通常预期的工作方式完全不同。

我怀疑这种接口(interface)继承有一些我可能没有充分利用的强大优势。与执行查询的显式转换相比,使用 IQueryable 实现 IEnumerable 有什么好处?

27 4 0