迁移到dbcontext LINQ where子句字符串参数
本文关键字:子句 字符串 参数 where LINQ dbcontext 迁移 | 更新日期: 2023-09-27 18:15:14
我正在将我的项目从ObjectContext迁移到DbContext,我对这句话有一个问题:
var query = db.Inventory.Where("it.IdState in {" + states + "}");
这与ObjectContext一起工作,但现在我在编译时得到一个错误:
Error CS1503 Argument 2: cannot convert from 'string' to 'System.Linq.Expressions.Expression<System.Func<Test.DAL.Inventory, bool>>'
现在似乎不可能做到这一点,我试图暴露ObjectContext来做到这一点,但我找不到
的方法任何想法?谢谢!
您可以(并且应该)将这些参数作为表达式强类型输入。
var query = db.Inventory.Where(x => states.Contains(x.IdState));
你需要把它倒过来
var query = db.Inventory.Where(it => states.Contains(it.IdState));
不能按照您的方式使用.Where
方法语法。请使用以下
var q = db.Inventory.Where(i => states.Contains(i.IdState));
检查下面关于"fruit"的例子,以便更好地理解.Where
子句的用法
https://msdn.microsoft.com/en-us/library/vstudio/bb534803 (v = vs.100) . aspx
资源:
LINQ (c#)中的查询语法和方法语法
Where
的参数必须是一个指定条件的委托。替换
"it.IdState in {" + states + "}"
it => states.Contains(it.IdState)
使用lambda表达式解决问题。