猿问

在 C# 中结合 BinaryExpression 和 Expression

我怎样才能结合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. ...


慕哥9229398
浏览 368回答 1
1回答
随时随地看视频慕课网APP
我要回答