让我们拿这个例子类
public class Order
{
public Order()
{
this.Items = new List<Item>();
}
public int OrderId { get; set; }
public List<Item> Items { get; set; }
}
public class Item{
public decimal Cost{get;set;}
public string ItemCode{get;set;}
}
我想写一个泛型表达式树(不应该指定任何硬编码属性名称),我可以在单个项目上面写一个集合的多个过滤器。
示例
var selected = order.Items.Any(i => i.ItemCode == "MM" && i.Cost > 10);
查询必须在同一项目上。通常当我们进行AND操作时,它会再次在项目列表上评估树,我需要查询在同一项目上。
这种类型的表达式树我想说的。这只是一个例子。
Expression propExpression = null;
Type propType = null;
ExpressionType tBinary;
propExpression = Expression.PropertyOrField(param, r.MemberName);
propType = propExpression.Type;
return Expression.Call(
typeof(Regex).GetMethod("IsMatch",
new[] { typeof(string), typeof(string), typeof(RegexOptions) }),
propExpression,
Expression.Constant(r.TargetValue, typeof(string)),
Expression.Constant(RegexOptions.IgnoreCase, typeof(RegexOptions))
);