EF Core无法用字符串构建Where/OrderBy子句?求解决方案
EF Core 字符串Where子句问题解决
EF Core原生确实没有内置字符串形式的Where/OrderBy方法,你之前在传统EF里用的这个功能,是依赖动态LINQ扩展实现的,升级到EF Core后得单独装对应的扩展包才能用。
具体解决办法
安装适配EF Core的动态LINQ包
你可以选下面两个包之一:Microsoft.EntityFrameworkCore.DynamicLinq:专门适配EF Core的版本System.Linq.Dynamic.Core:通用型动态LINQ实现,也完美支持EF Core
用NuGet命令安装的话:
Install-Package Microsoft.EntityFrameworkCore.DynamicLinq # 或者 Install-Package System.Linq.Dynamic.Core引入对应命名空间
安装后,在代码文件顶部添加对应命名空间(比如using System.Linq.Dynamic;或者using Microsoft.EntityFrameworkCore.DynamicLinq;,根据你装的包来),之后原来的代码就能正常运行了。
报错原因说明
你看到的Cannot convert from 'string' to 'System.Func<T, bool>'错误,是因为EF Core原生的Where方法只认委托类型的参数,不认字符串表达式。动态LINQ扩展就是给IQueryable<T>加了接受字符串参数的重载,补上了这个功能。
内容的提问来源于stack exchange,提问作者Lance
相关产品推荐
相关产品推荐

