gpt4 book ai didi

c# - 链接 AsEnumerable 和 AsQueryable 是否安全?

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:26 26 4
gpt4 key购买 nike

我有一个扩展方法可以对 IEnumerableIQueryable 进行操作。该方法解析输入并在最后调用 Skip().Take()

public static IEnumerable<T> SelectRange<T>(
this IEnumerable<T> target,
RangeHeaderValue range
)

此方法适用于 IQueryable,但返回的是 IEnumerable。所以我添加了另一个方法来转换,调用第一个方法并再次转换:

public static IQueryable<T> SelectRange<T>(
this IQueryable<T> target,
RangeHeaderValue range
)
{
return target.AsEnumerable().SelectRange(range).AsQueryable();
}

这样链式转换安全吗?我担心它会干扰 IQueryable 提供程序,而是在内存集合上运行该方法。我了解惰性/即时加载的基础知识,但这是一个相当复杂的主题,我不想只是假设它会起作用。


注意:关于链接的危险,接受的答案是正确的,但我想补充一点,实现 IQueryable 方法并从 调用它IEnumerable 一个(所以简单地切换东西)是安全的。

最佳答案

没有;这不是一个好主意。

调用 AsEnumerable()将实现整个查询,然后运行 ​​Skip()Take()在客户端上。

您需要为采用并返回 IQueryable<T> 的方法创建一个单独的(且相同的)版本它只调用 Queryable 方法,以便查询可以在服务器上运行。

关于c# - 链接 AsEnumerable 和 AsQueryable 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18186154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com