Я пытаюсь динамически создать следующее выражение условия Where:
context.Cars.
Where(c => EntityFunctions.DiffDays(c.Created, c.Created) == null).
ToList()
Это код, который я использую для создания выражения:
var parameter = Expression.Parameter(typeof(Car), "c");
var property = Expression.Property(parameter, "Created");
var function = Expression.Call(typeof(EntityFunctions), "DiffDays",
null, property, property);
var comparison = Expression.Equal(function, Expression.Constant(null));
var result = Expression.Lamda<Func<Car, bool>>(comparison, parameter);
Результат показывает (кажется, отсутствует "EntityFunctions.DiffDays"):
{c => (DiffDays(c.Created, c.Created) == null)}
Когда я пытаюсь выполнить с:
context.Cars.Where(result.Compile()).ToList()
Я получаю сообщение об ошибке:
эта функция может быть вызвана только из
linq для юридических лиц
Вы знаете, чего мне не хватает? Это потому, что он показывает только «DateDiff», а не «EntityFunctions.DateDiff»
Спасибо. Адам