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))
);