【问题标题】:No applicable aggregate method 'OrderByDescending' exists'不存在适用的聚合方法“OrderByDescending”
【发布时间】:2018-05-04 14:41:14
【问题描述】:

在常规 linq 中很好,但在动态 linq 中没有这种方法,我该如何找到解决方案 这是我在动态 linq 中的错误代码

q = " CRM_ASSENTAMENTOS.Count > 0 && CRM_ASSENTAMENTOS.OrderByDescending(ID_ASSENTAMENTO).FirstOrDefault().ID_PRIORIDADE == 2";
ocorrencias = ocorrencias.Where(q);

和我的常规 linq

ocorrencias = ocorrencias.Where(o => o.CRM_ASSENTAMENTOS.OrderByDescending(a => a.ID_ASSENTAMENTO).FirstOrDefault().ID_PRIORIDADE == 2);

【问题讨论】:

  • 这里o.CRM_ASSENTAMENTOS的确切类型是什么?
  • CRM_ASSENTAMENTOS 是对象列表

标签: c# linq dynamic-linq


【解决方案1】:

在您的动态示例中,您有

OrderByDescending(ID_ASSENTAMENTO)

您应该像在显式 Linq 中一样提供委托:

OrderByDescending(a => a.ID_ASSENTAMENTO)

【讨论】:

  • 动态 linq 不读取委托错误:'类型'CRM_ASSENTAMENTOS'中不存在属性或字段'a''
  • 我认为您将不得不发布显示表达式编译的完整代码
【解决方案2】:

System.Linq.Dynamic.Core支持内联OrderByDescending(...)

示例见QueryableTests.OrderByDescending.cs#L36

你能试试那个 NuGet 库吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 2021-06-26
    • 2021-03-26
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多