【问题标题】:Unhandled exception. System.InvalidOperationException: The LINQ expression error by JsonConvert.Deserialize()未处理的异常。 System.InvalidOperationException:JsonConvert.Deserialize() 的 LINQ 表达式错误
【发布时间】:2021-10-09 05:20:40
【问题描述】:

我从这段代码中得到一个错误:

var b = content.FormMasterLists.Where(x => x.FormMasterStatus == "pending");

var c = b.Where(x => JsonConvert.DeserializeObject<ApprovalCCB>(x.FormMasterApprovalCcb).Group.SelectMany(x => x.Department).SelectMany(x => x.ApprovalCCBLevel).SelectMany(x => x.Approver).Where(x => x.ApproverEmail == "christ").Any());

但是这段代码运行成功:

var b = content.FormMasterLists.Where(x => x.FormMasterStatus == "pending").ToList();

var c = b.Where(x => JsonConvert.DeserializeObject<ApprovalCCB>(x.FormMasterApprovalCcb).Group.SelectMany(x => x.Department).SelectMany(x => x.ApprovalCCBLevel).SelectMany(x => x.Approver).Where(x => x.ApproverEmail == "christ").Any());

没有List(),有什么方法可以声明.Where

【问题讨论】:

    标签: asp.net-core entity-framework-core jsonconvert


    【解决方案1】:

    有没有什么方法可以声明 .Where 没有 List()?

    在这样的实现中没有办法。 EF Core 无法将JsonConvert.DeserializeObject 转换为 SQL 并在服务器端提供所需的过滤。

    因此,您必须将对象具体化为 IEnumerable 并使用客户端过滤。

    无论如何,一些数据库提供基于 JSON 内容的过滤,但您必须为 EF Core 创建适当的扩展函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多