Использование имен специальных свойств в Dynamic LINQ

Я создаю динамический запрос LINQ следующим образом:

"Guid=Guid(\"" + entityId + "\")"

В конечном итоге это передается в запрос .Where() где-то в коде, который я вызываю.

Я получаю эту ошибку:

ParseException: '.' или '(' ожидается

Кажется, это потому, что он находит не свойство Guid, а функцию Guid.

Как я могу запросить свойство Guid моего объекта?


person Kendall Frey    schedule 10.12.2013    source источник


Ответы (2)


Guid действительно ключевое слово. Вы можете избежать идентификаторов ключевых слов, добавив к ним префикс @.

Правильное выражение выглядит так:

"@Guid=Guid(\"" + entityId + "\")"
person Kendall Frey    schedule 10.12.2013

Просто чтобы привести в порядок ответ Кендалла, я думаю, что более элегантный подход - позволить Dynamic LINQ обрабатывать преобразования типов с помощью параметризованных запросов.

myIqueryable1.Where("@Guid=@0", entityId)
person Le-roy Staines    schedule 15.08.2014