我使用参数为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/