我使用参数为TEntity的泛型模式
例如TEntity是Person

public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string MobileNo { get; set; }
    public int Age { get; set; }
}


我需要自动生成如下所示的表达式树:

Expression<Func<TEntity, bool>> :
          x=> x.ID = 123 && x.Name="AAA" && x.Family="BBB"


用于以下方法的返回类型

public Expression<Func<TEntity, bool>> SearchExpression()
{
    HERE !!!
}


有人可以为此目的帮助我吗?

最佳答案

根据您的描述/评论,以下内容将为您工作:

public Expression<Func<TEntity, bool>> SearchExpression()
{
    ConstantExpression[] expectedValues = Your_Magic_Method_Of_Obtaining_Expected_Values();

    var entity = Expression.Parameter(typeof (TEntity));

    var comparisonExpression = typeof(TEntity).GetProperties()
                                              .Select((info, i) => Expression.Equal(
                                                                      Expression.Property(entity, info),
                                                                      expectedValues[i]))
                                              .Aggregate(Expression.And);
    return Expression.Lambda<Func<TEntity, bool>>(comparisonExpression, entity);
}

关于c# - 使用实体(x.ID == 123)的属性创建表达式树(Expression <Func <TEntity,bool >>),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22474913/

10-12 17:50