Если имя участника ( Number
в этом примере) не известно во время компиляции, вам нужно будет построить дерево выражений вручную, например:
static Expression> BuildPredicate(
string fieldName, string containsValue)
{
var arg = Expression.Parameter(typeof(T), "e");
var str = Expression.Call(typeof(SqlFunctions), "StringConvert", null,
Expression.PropertyOrField(arg, fieldName));
var contains = Expression.Call(str, "Contains", null,
Expression.Constant(containsValue, typeof(string)));
return Expression.Lambda>(contains, arg);
}
с использованием:
var predicate = BuildPredicate("Number", "6");
var filtered = data.Where(predicate);