Dynamic query with LINQ won't work

断了今生、忘了曾经 提交于 2019-12-29 08:15:08

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!