Я написал несколько кодов для создания динамических выражений для фильтрации моей нумерации страниц.
Я пытаюсь сделать динамическое выражение встроенных функций EF Core для поиска (EF.Functions.Like
).
Я пробовал способ наподобие bottom, но это метод расширения, и при вызове метода первые параметры не используются. Я не знаю, как идти по пути ==> Ef => Function => Like.
Метод должен использоваться следующим образом => Ef.Functions.Like("Property to search", "%Some Pattern")
var likeMethod = typeof(DbFunctionsExtensions)
.GetMethods()
.Where(p => p.Name == "Like")
.First();
string pattern = $"%{finalConstant}%";
ConstantExpression likeConstant = Expression.Constant(pattern,typeof(string));
// the member expression is the property expression for example p.Name
var likeMethodCall = Expression.Call(method: likeMethod, arguments: new[] { memberExpression, likeConstant });
var searchLambda = Expression.Lambda<Func<T, bool>>(likeMethodCall, parameter);
query = query.Where(searchLambda);
но это исключение, говорящее
Неправильное количество аргументов, предоставленных для вызова метода 'Boolean Like (Microsoft.EntityFrameworkCore.DbFunctions, System.String,
System.String) '\ r \ nИмя параметра: метод