代码之家  ›  专栏  ›  技术社区  ›  LaRae White

如何修复“无法将具有语句体的lambda表达式转换为sql执行的表达式树?

  •  0
  • LaRae White  · 技术社区  · 8 年前

    我必须根据嵌套表中的数据对这个“报告”表进行排序。一、 e.每个报告项都有许多与之相关联的网络,每个网络都有一个状态属性,我需要对报告列表进行排序。这是一个迄今为止我所能获得的示例,但是我很难以IOrderedQueryable可以接受的方式编写它,因为我需要将其翻译成SQL并通过SQL执行,而不是在编写代码的地方执行:

    var orderedReports = reports.OrderBy((r) =>
    {
        switch (r.Nets.Any(n => n.Status.Contains("New")) ? "New" :
                r.Nets.Any(n => n.Status.Contains("Updated")) ? "Updated" :
                r.Nets.Any(n => n.Status.Contains("Ignored")) ? "Ignored" : "None" )
        {
            case "New": return 1;
            case "Updated": return 2;
            case "Ignored": return 3;
            case "None": return 4;
            default: return 5;
        }
    }).ThenBy(r => r.ReportID); 
    

    我意识到许多报告可能具有相似甚至匹配的状态数,因此在初始排序后,我会根据该报告的ID进行排序。我基本上希望所有的报告,至少有一个“新”的地位,然后其他遵循如上所述。我还想重申,我需要确保它保持在IOrderedQueryable中,因为在查询数据库时需要在SQL中执行。

    1 回复  |  直到 8 年前
        1
  •  2
  •   peewee_RotA    8 年前