2016-10-20 1 views
2

Я установил dll System.Linq.Dynamic, а затем попытался добавить строку в качестве параметра предложения WHERE в Linq. Но я все еще получаю ошибку, что параметр string поддерживается предложением WHERE.Динамическая строка в linq C#

Код:

_dbContext.TmRecords.Where("city=london"); 

Ошибка:

Severity Code Description Project File Line Error CS1503 Argument 2: cannot convert from 'string' to 'System.Linq.Expressions.Expression>' Extranet.Domain

Здесь параметр города динамически изменяется в какой-то другой параметр. Поэтому мне нужно использовать динамические запросы в linq.

+0

Вам нужно создать предикат, например: '_dbContext.TmRecords.Where (запись => record.city = "лондон");' –

+0

Возможные дубликата из предложения Dynamic WHERE в LINQ] (http://stackoverflow.com/questions/848415/dynamic-where-clause-in-linq) –

+1

@Mark о динамическом Linq (https://weblogs.asp.net)/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library), а не обычный Linq – Kilazur

ответ

7

Вам необходимо добавить using System.Linq.Dynamic; в свой файл.

переписать также запрос так:

_dbContext.TmRecords.Where("city = @0", "london"); 
+0

с использованием '@ 0' необходимо или просто хорошая практика? Спасибо, это мне помогло :) – Roy123

+0

То же самое, как я могу использовать его в выражении lamda? –

+2

Не нужно. Вы можете использовать '' City == \ "london \" "' вместо этого, но используя параметризованный, более читаемый IMHO. @Roy_Dorsthorst – dotctor