C# 将Linq表达式作为字符串传递?
下面的代码工作正常C# 将Linq表达式作为字符串传递?,c#,linq-to-entities,C#,Linq To Entities,下面的代码工作正常 using (var ctx = new MyEntities()) { var devices = ctx.Devices .Where(x=> x.Device == "TEST") .ToList(); return devices; } 我想做的是传入“Where”子句中的表达式。我看到它可能需要一个字符串
using (var ctx = new MyEntities())
{
var devices = ctx.Devices
.Where(x=> x.Device == "TEST")
.ToList();
return devices;
}
我想做的是传入“Where”子句中的表达式。我看到它可能需要一个字符串,但下面抛出了一个错误:
String expression = "x=> x.Device == \"TEST\"" ;
using (var ctx = new MyEntities())
{
var devices = ctx.Devices
.Where(expression)
.ToList();
return devices;
}
运行时的错误消息是“查询语法无效。术语'>',第6行,第4列。”;传入最初从字符串派生的表达式的最佳方式是什么?您必须手动构建表达式 IIRC,在LINQ101示例中有一个DynamicExpressions库可以为您实现这一点。除了删除lambda符号外,它还可以实现很多功能:
String expression = "Device == \"TEST\"" ;
//... etc
.Where(expression)
另一个例子(来自博客):
(来源:)我认为
中的不能将字符串作为参数。允许您以字符串的形式传递查询,尽管可能不是以上面尝试的特定格式。这取决于你想要达到的目标,也许值得一看