使用LINQ进行动态查询将不起作用

时间:2011-06-08 12:15:41

标签: asp.net-mvc linq dynamic

我尝试了几种方法来执行一个简单的查询,但没有成功。

var result = db.Persons.Where("surname = bob");  

以上将给出错误:“人物”类型中没有属性或字段“bob”

var result = db.Persons.Where("surname = 'bob'");  

以上将给出错误:字符文字必须包含一个字符

有没有其他人遇到过这些问题,你做了什么? 是不是动态LINQ假设像这样工作或有旧版本或什么?

我已将Dynamic.cs添加到我的项目中,我using System.Linq.Dynamic

2 个答案:

答案 0 :(得分:9)

进行比较时,您需要两个==,并且为了避免注射,请使用以下重载:

var result = db.Persons.Where("surname == @0", "bob");

另外,我建议您下载并查看您使用的产品附带的examples。 Scott Gu也有blogged关于它。

答案 1 :(得分:3)

var result = db.Persons.Where("surname == \"bob\"");

会起作用,但你应该确保所有的鲍勃都是正确的逃脱。

那就是说,你最好有这样的事情:

String bob = "bob"; // or whatever
var result = from p in db.Persons p
             where p.surname = bob
             select p