迁移到 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

资源:

Query Syntax and Method Syntax in LINQ (C#)