相关疑难解决方法(0)

在 Entity Framework Core 3 中添加两个表达式来创建谓词不起作用

我正在尝试在 .NET Core 应用程序中使用 C# 和 Entity Framework Core 3 构建“And”谓词方法。

该函数将两个表达式相加,并将其传递给 IQueryable 代码:

public Expression<Func<T, bool>> AndExpression<T>
                    (Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
{
      var andExpression = Expression.AndAlso(
           left.Body, Expression.Invoke(right,
           left.Parameters.Single()));

      return Expression.Lambda<Func<T, bool>>(andExpression, left.Parameters);
}
Run Code Online (Sandbox Code Playgroud)

函数的调用

Expression<Func<Entity, bool>> left = t => t.Id == "id1";
Expression<Func<Entity, bool>> right = t => t.Id == "id2";
var exp = AndExpression(left, right);
this.dbContext.Set<Entity>().source.Where(exp).ToList();
Run Code Online (Sandbox Code Playgroud)

我的代码在 EF Core 2 版本中运行良好,但在我将版本更新到版本 3 后,它抛出以下异常

LINQ 表达式 'Where( source: DbSet, predicate: (s) => (t => t.Id …

c# expression entity-framework-core

6
推荐指数
1
解决办法
3819
查看次数

标签 统计

c# ×1

entity-framework-core ×1

expression ×1