Я хочу использовать динамический запрос LINQ для поиска с некоторым текстом во всех свойствах класса. я использую следующую функцию для создания выражения. Я передаю имя свойства и текст поиска методу. В этом методе, если тип свойства String, он работает нормально. если тип свойства — int, DateTime, GUID. то он не работает.
Как мы знаем, метод contains только для массива элементов или для строки. Я думаю, что значение свойства должно быть приведено к строке. Итак, как это сделать? Решение с пояснением является полной помощью.
я собрал код из этого.
public static Expression<Func<T, bool>> ContainsExp<T>(string propertyName, string contains)
{
var parameterExp = Expression.Parameter(typeof(T), "type");
var propertyExp = Expression.Property(parameterExp, propertyName);
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(contains, typeof(string));
var containsMethodExp = Expression.Call(propertyExp, method, someValue);
return Expression.Lambda<Func<T, bool>>(containsMethodExp, parameterExp);
}
String.Contains
наDateTime
? - person Raphaël Althaus   schedule 11.10.2013