asp.net - Linq 按子表排序

标签 asp.net linq

我的问题是如何按子表对 Linq 查询进行排序:

表格应用程序:

- app_id
- name

表应用程序状态:

 - app_status_id
 - app_id
 - severity
 - status_date

我想查询所有应用程序,按最后状态严重性排序:

app_id  name
1   first
2   second
3   third

app_status_id   app_id  severity    status_date
1   1   5   12-4-2010
2   1   2   15-4-2010
3   2   7   10-4-2010
4   3   3   13-4-2010

Now i want it sorted like:
app_id  name
3   third
1   first
2   second

任何人都可以帮我解决这个问题的 LINQ 查询吗?

我已经尝试了以下方法,但没有成功:

    var apps = from apps in dc.Apps
                         orderby apps.AppStatus.LastOrDefault().severity
                         select apps;

编辑:

我将完善我的问题,它应该首先获取具有最新状态的所有应用程序(因此按状态日期),然后应该按最后状态的严重性对该列表进行排序。

最佳答案

试试这个:

var apps = from apps in dc.Apps
           orderby apps.AppStatus.Max(a => a.severity)
           select apps;

根据您的评论进行编辑:

var apps = from apps in dc.Apps
           where apps.AppStatus.Count() > 0 // to prevent null reference below
           orderby apps.AppStatus.Where(a1 => a1.status_date ==
               apps.AppStatus.Max(a2 => a2.status_date)
           ).Single().severity
           select apps;

关于asp.net - Linq 按子表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651846/

相关文章:

c# - 如何按类型排序列表?

c# - 使用 lambda 从数组中选择每隔一个元素

vb.net - 用于对具有空值的字段进行排序的表达式 Lambda

c# - 如何在c#中的文本框之间复制选定的日期

c# - ASP.NET 核心 FromQuery 获取内部带有点号的无效参数

c# - 表单中不存在的所需实体验证失败?

linq - 使用 linq 将 list<long> 转换为 list<int> 的最简单方法是什么?

c# - Linq & boolean 函数

javascript - 加载 jQuery 的最佳方式是什么?

javascript - JQuery Mobile 错误