我必须根据嵌套表中的数据对这个“报告”表进行排序。一、 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中执行。