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)
另一个例子(来自博客):



(来源:)

我认为
中的
不能将字符串作为参数。允许您以字符串的形式传递查询,尽管可能不是以上面尝试的特定格式。这取决于你想要达到的目标,也许值得一看