Я создал общую функцию выражения лямбда, как показано ниже.
Я пытаюсь создать запрос динамического фильтра.
как применять метод string.contains в общем выражении лямбда
public Expression<Func<TSource, bool>> GenericExpression<TSource>(string propertyName, string searchTerm)
{
//x=>x.Name.Contains("Emre");
var parameter = Expression.Parameter(typeof(TSource), "x");
var property = Expression.Property(parameter,propertyName);
var search = Expression.Constant(searchTerm,typeof(string));
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var containsMethodExp = Expression.Call(property, method, search);
return Expression.Lambda<Func<TSource, bool>>(containsMethodExp, parameter);
}
Я получаю сообщение об ошибке, когда функция вызова GenericExpression. сообщение об ошибке говорит, что:
Метод 'Логическое Contains (System.String)' объявлена типа 'System.String' не может быть вызван с экземпляром типа 'System.Int32'
I Не понимаю детали ошибки.
Не могли бы вы объяснить, что
Спасибо
Похоже, вы пытаетесь применить это выражение фильтра в числовом столбце. –
hımm yes right. Я применяю эту функцию в «цикле foreach», а первый тип аргумента - числовой. Другими являются строки. В этой ситуации невозможно ввести числовой тип в строку. спасибо – mrkiyak
Так что мне нужно сначала применить метод ToString – mrkiyak