迁移到 dbcontext LINQ where 子句字符串参数
migrating to dbcontext LINQ where clause string parameter
我正在将我的项目从 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
的参数必须是制定条件的委托。替换
"it.IdState in {" + states + "}"
与
it => states.Contains(it.IdState)
使用 lambda 表达式解决问题。
.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
资源:
我正在将我的项目从 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
的参数必须是制定条件的委托。替换
"it.IdState in {" + states + "}"
与
it => states.Contains(it.IdState)
使用 lambda 表达式解决问题。
.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
资源: