Динамический запрос с LINQ не будет работать - PullRequest
1 голос
/ 08 июня 2011

Я пробовал пару способов выполнить простой запрос, но безуспешно.

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

Выше приведено сообщение об ошибке: Нет свойства или поля 'bob' в типе 'Person'

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

Выше приведено сообщение об ошибке: Символьный литерал должен содержать ровно один символ

У кого-нибудь еще были такие проблемы и что вы делали?
Разве Dynamic LINQ не должен работать так или есть старые версии или что-то в этом роде?

Я добавил Dynamic.cs в свой проект, и я using System.Linq.Dynamic.

Ответы [ 2 ]

9 голосов
/ 08 июня 2011

При выполнении сравнений вам нужно два ==, а также, чтобы избежать инъекций, используйте следующую перегрузку:

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

Также я бы порекомендовал вам скачать и посмотреть примеров предоставляется с продуктом, который вы используете.Скотт Гу также написал в блоге об этом.

3 голосов
/ 08 июня 2011
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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...