C# 构建泛型表达式树以筛选子集合属性的多个属性
让我们以这个类为例C# 构建泛型表达式树以筛选子集合属性的多个属性,c#,generics,expression-trees,C#,Generics,Expression Trees,让我们以这个类为例 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 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;}
}
查询必须在同一项上进行。通常,当我们在项目列表上再次执行和操作它的求值树时,我需要查询位于同一个项目上
这种类型的表达式树我想是对的。这只是一个例子
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))
);
不清楚你在问什么。该示例完全按照您的要求(当前的公式化方式)执行。我想构建通用表达式树。这是Lambda表达式示例。然后提供一个示例,说明构建和泛型表达式树的含义。因为示例lambda表达式是由C#编译器构建的通用表达式树。您是否在问如何动态组合谓词表达式(例如,某种谓词生成器)?用小示例更新了原始问题。此外,这里是我试图实现的收集。
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))
);