Здесь - пост, описывающий способ динамического создания предиката Expression<Func<MyClass, bool>>
. Вот фрагмент кода:
var param = Expression.Parameter(typeof(string), "p");
var len = Expression.PropertyOrField(param, "SomeText");
var body = Expression.Equal(
len, Expression.Constant("Text"));
var lambda = Expression.Lambda<Func<string, bool>>(
body, param);
Интересно, как применить регулярное выражение к строке вместо равенства? Есть ли возможность?
Возможный псевдокод будет выглядеть так:
var param = Expression.Parameter(typeof(string), "p");
var len = Expression.PropertyOrField(param, "SomeText");
var body = Expression.Regexp(
len, @"\D+");
var lambda = Expression.Lambda<Func<string, bool>>(
body, param);