我是 LINQ 的新手,正在努力寻找如何执行以下操作。
我有一个具有 sql server 后端的系统,它使用 EF5 与数据库进行交互。我有以下表格
Case 
CaseStatus
Status
CaseAction
ActionType
关系是...
Case (1 - many) CaseStatus
CaseStatus (1 - many) CaseAction
Status (1 - many) CaseStatus
ActionType (1 - many) CaseAction
我需要显示一个案例记录列表,其中包括最新状态(基于与案例相关的最后一个 CaseStatus 记录)和最新的操作记录(基于与与案例相关的最新 CaseStatus 记录相关的最新 CaseAction 记录)
所有案例都至少有 CaseStatus 记录,但并非所有 CaseStatus 记录都有相关的 CaseAction 记录。在这些情况下,我仍然需要显示案例记录中的一些详细信息,但我会将操作列留空
在 T-SQL 中,这就是我想要的东西
select 
    c.ID            CaseID
    ,cs1.Name       CurrentStatus
    ,cs1.Date       StatusDate
    ,ca1.Name       LatestAction
    ,ca1.Date       ActionDate
from 
    [Case] c
    left join 
    --Latest CaseStatus record to get current status of case
    (
    select
        cs.ID
        ,cs.CaseID
        ,s.Name 
        ,cs.Date
        ,ROW_NUMBER() over (partition by caseid order by cs.id desc) rn
    from
        CaseStatus cs
        --Join to status to get the name of the statusID
        inner join Status s on cs.StatusID=s.ID
    )   cs1
    on c.ID=cs1.CaseID and cs1.rn=1
left join 
    --Latest CaseAction on the case
    (
    select
        ca.CaseStatusID
        ,at.Name    
        ,ca.Date
        ,ROW_NUMBER() over (partition by casestatusID order by ca.id desc) rn
    from
        CaseAction ca
        inner join ActionType at on ca.ActionTypeID=at.ID
    ) ca1
    on ca1.CaseStatusID=cs1.ID and ca1.rn=1
我知道将数据导入应用程序可以做的一件事是在我的 EF 模型中包含包含此 SQL 的视图。
出于学习的目的,我想要的是能够使用 LINQ 获得相同的结果。如果可能的话,我真的很想看看使用综合语法和扩展方法语法的例子
提前感谢您的任何帮助