问题
I've tried a couple of ways to execute a simple query but without success.
var result = db.Persons.Where("surname = bob");
The above will give the error: No property or field 'bob' exists in type 'Person'
var result = db.Persons.Where("surname = 'bob'");
The above will give the error: Character literal must contain exactly one character
Has anyone else had these problems and what did you do?
Isn't Dynamic LINQ suppose to work like this or are there older versions or something?
I've added the Dynamic.cs to my project and I'm using System.Linq.Dynamic.
回答1:
When doing comparisons you need two == and also in order to avoid injection use the following overload:
var result = db.Persons.Where("surname == @0", "bob");
Also I would recommend you downloading and looking at the examples provided with the product you are using. Scott Gu has also blogged about it.
回答2:
var result = db.Persons.Where("surname == \"bob\"");
would work, though you should make sure whatever bob really is is properly escaped too.
That said, you would do better to have something like this:
String bob = "bob"; // or whatever
var result = from p in db.Persons p
where p.surname = bob
select p
来源:https://stackoverflow.com/questions/6278540/dynamic-query-with-linq-wont-work