我怎样才能结合BinaryExpression和Expression<Func<dynamic / T, bool>>?
例如:
void AddGlobalFilter<T>(Expression<Func<T, bool>> expr)
{
var parameter = Expression.Parameter(type, "t");
var member = Expression.Property(filter.Parameter, field);
var constant = Expression.Constant(null);
var body = Expression.Equal(member, constant);
var combine = Expression.AndAlso(body, expr);
}
我正在尝试为实体框架 (EF) 核心定义全局过滤器。问题是我必须手动组合多个过滤器。
ModelBuilder如果模型实现了IDbDeleted接口,则可以添加一个过滤器。
另一个可以为特定模型手动添加。基本思想是我有一个所有表达式的列表,然后将它们组合起来:
var expression = listExpressions.First();
foreach (var second in listExpressions.Skip(1))
{
expression = Expression.AndAlso(expression, second);
}
var lambdaExpression = Expression.Lambda(expression, parameter);
modelBuilder.Entity(item.Key).HasQueryFilter(lambdaExpression);
当然我得到错误(第一个来自Expression.Equal,第二个来自t => t...):
过滤器表达式 't => t => (Not(t. ...
相关分类