Вам нужно получить MethodInfo
, представляющий метод string.StartsWith(string)
, а затем использовать Expression.Call
для построения выражения, представляющего вызов метода instance:
var property = Expression.Property(item, "Name");
var method = typeof(string).GetMethod("StartsWith", new[] { typeof(string) });
var argument = Expression.Constant("Dish");
// item.Name.StartsWith("Dish")
var startsWithDishExpr = Expression.Call(property, method, argument);
YouЗатем вам нужно будет &&
подвыражений вместе создать тело.
var lambdaBody = Expression.AndAlso(idMoreThanFive, startsWithDishExpr);
И, наконец, построить лямбду:
var lambda = Expression.Lambda<Func<Item, bool>>(lambdaBody, item);