Динамическая строка в linq с #

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

Код:

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

Ошибка:

Код серьезности Описание Ошибка строки файла проекта CS1503 Аргумент 2: невозможно преобразовать из 'строки' в 'System.Linq.Expressions.Expression>' Extranet.Domain

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


person Dinesh    schedule 20.10.2016    source источник
comment
Вам нужно создать предикат, например: _dbContext.TmRecords.Where(record => record.city = "london");   -  person Markiian Benovskyi    schedule 20.10.2016
comment
Возможный дубликат динамического предложения WHERE в LINQ   -  person santosh singh    schedule 20.10.2016
comment
@Mark, речь идет о динамическом Linq, а не обычный Linq   -  person Kilazur    schedule 20.10.2016
comment
Моим первым предположением в таких случаях будет то, что вы забыли правильный using   -  person Kilazur    schedule 20.10.2016
comment
Можете показать код для TmRecords?   -  person Stef Geysels    schedule 20.10.2016
comment
У вас есть using System.Linq.Dynamic; вверху файла? Без этого компилятор может найти только метод, ожидающий выражения, а не строки.   -  person DavidG    schedule 20.10.2016


Ответы (1)


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

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

_dbContext.TmRecords.Where("city = @0", "london");
person Hamid Pourjam    schedule 20.10.2016
comment
использование @0 необходимо или это просто хорошая практика? Спасибо, мне это тоже помогло :) - person Roy123; 20.10.2016
comment
То же самое, как я могу использовать это в выражении lamda? - person Dinesh; 20.10.2016
comment
Это не обязательно. Вместо этого вы можете использовать "City == \"london\"", но использование параметризованного более читабельно. @Roy_Dorsthorst - person Hamid Pourjam; 20.10.2016
comment
Если у вас есть еще один вопрос, задавайте его в новом вопросе. @dineshsns - person Hamid Pourjam; 20.10.2016