【发布时间】:2017-11-16 19:20:14
【问题描述】:
到目前为止,我有一个 .net 4.7 库,我在其中以这种模式使用 IQuery:
IQueryable<MyType> myIQueryable = mySource;
if(paramIsNew != null)
{
myIQueryable = myIQueryable.where(x => x.IsNew == paramIsNew);
}
等等更多的参数和条件。
但是,现在我正在尝试将此库转换为 .net 标准库,但我收到无法将 IEnumerable 转换为 IQueryable 的错误,它存在并且显式转换。
我没有真正看到问题以及如何解决它。
【问题讨论】:
-
@PatrickHofman 为什么你认为它应该是
IEnumerable?这将在内存中执行操作,而不是在底层数据源中执行,这可能更可取。 -
这个错误出现在哪一行?查看该代码,我看到的最有可能的选项是 mySource 是
IEnumerable<MyType>,这会导致错误...可能不是,但您需要确认详细信息。 -
myIQueryable.where(x => x.IsNew == paramIsNew);不应该编译或者它正在调用您编写的自定义方法,C# 区分大小写,实际方法是Where而不是where,所以请显示Minimal, Complete, and Verifiable example它实际上使用更正的大写进行编译或包含您的自定义where扩展方法。此外,MCVE 需要包括您如何获得mySource -
@PatrickHofman 代码中is没有强制转换,所以不存在的强制转换显然不可能无效。
标签: c# ienumerable iqueryable