C# 迁移到dbcontext LINQ where子句字符串参数
我正在将我的项目从ObjectContext迁移到DbContext,这句话有问题:C# 迁移到dbcontext LINQ where子句字符串参数,c#,linq,where-clause,dbcontext,C#,Linq,Where Clause,Dbcontext,我正在将我的项目从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.
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>>'
错误CS1503参数2:无法从“字符串”转换为“System.Linq.Expressions.Expression”
现在似乎不可能做到这一点,我试图公开ObjectContext来做到这一点,但我找不到方法
有什么想法吗?
谢谢! 您可以(也应该)将这些参数强类型化为表达式
var query = db.Inventory.Where(x => states.Contains(x.IdState));
你需要把它倒过来
var query = db.Inventory.Where(it => states.Contains(it.IdState));
的参数,其中
必须是规定条件的委托。替换
"it.IdState in {" + states + "}"
与
使用lambda表达式来解决此问题。方法语法不能以您现有的方式使用。为了实现这一点,请使用以下
var query = db.Inventory.Where(x => states.Contains(x.IdState));
var q = db.Inventory.Where(i => states.Contains(i.IdState));
为了更好地理解.Where
子句是如何使用的,请查看下面关于“水果”的示例
资源: