C# IEnumerable can';t转换为IQueryable
到目前为止,我有一个.net 4.7库,在此模式下我使用IQuery:C# IEnumerable can';t转换为IQueryable,c#,ienumerable,iqueryable,C#,Ienumerable,Iqueryable,到目前为止,我有一个.net 4.7库,在此模式下我使用IQuery: IQueryable<MyType> myIQueryable = mySource; if(paramIsNew != null) { myIQueryable = myIQueryable.where(x => x.IsNew == paramIsNew); } IQueryable myIQueryable=mySource; if(paramIsNew!=null) { myIQuery
IQueryable<MyType> myIQueryable = mySource;
if(paramIsNew != null)
{
myIQueryable = myIQueryable.where(x => x.IsNew == paramIsNew);
}
IQueryable myIQueryable=mySource;
if(paramIsNew!=null)
{
myIQueryable=myIQueryable.where(x=>x.IsNew==paramIsNew);
}
等等,以获取更多参数和条件
然而,现在我试图将这个库转换为.net标准库,但是我得到的错误是我无法将IEnumerable转换为IQueryable,它存在并显式转换
我看不出真正的问题以及如何解决它。这是因为
Queryable
类和其他特定于Queryable的扩展方法(如Where
)不是默认的.NET标准库的一部分。因此您使用Enumerable.Where
扩展方法,该方法返回IEnumerable
。您的myIQueryable
属于IQueryable
类型,因此您会遇到编译器错误。您需要安装System.Linq.Queryable
nuget包,然后使用compile编译您的代码。@patrickhoffman为什么认为它应该是IEnumerable
?这将在内存中执行操作,而不是在底层数据源中执行操作,这可能更可取?查看该代码,我看到的最有可能的选项是mySource是导致错误的IEnumerable
。。。可能不是,但您需要确认详细信息。或者myiquikeryable.where(x=>x.IsNew==paramIsNew)
不应编译,或者它正在调用由您编写的自定义方法,C#区分大小写,实际方法是Where
而不是Where
,因此请显示一个实际使用更正的大写字母编译的方法,或者包含您的自定义Where
扩展方法。此外,MCVE还需要包括如何获取mySource
@patrickhoffman代码中没有强制转换,因此不存在的强制转换显然不能无效。