我将我的项目从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来做到这一点,但我无法找到方法
有什么想法吗? 谢谢!
答案 0 :(得分:6)
您可以(并且应该)强烈地将这些参数键入为表达式。
var query = db.Inventory.Where(x => states.Contains(x.IdState));
答案 1 :(得分:3)
你需要扭转它
var query = db.Inventory.Where(it => states.Contains(it.IdState));
答案 2 :(得分:3)
.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
<强>资源:强>
答案 3 :(得分:2)
Where
的参数必须是制定条件的委托。取代
"it.IdState in {" + states + "}"
与
it => states.Contains(it.IdState)
使用lambda表达式解决问题。