Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 迁移到dbcontext LINQ where子句字符串参数_C#_Linq_Where Clause_Dbcontext - Fatal编程技术网

C# 迁移到dbcontext LINQ where子句字符串参数

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.

我正在将我的项目从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>>' 
错误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
子句是如何使用的,请查看下面关于“水果”的示例

资源: