如何将此 SQL 语句传输到 LINQ 查询中?

How do I transfer this SQL statement into a LINQ query?

我有这个非常简单的 SQL 语句,我想使用 LINQ 获取相同的数据,但我似乎找不到正确的方法。

select A.AUFTRAGID,
       A.AUFTRAGNR, 
       A.GESELLSCHAFTID, 
       A.DEBITORID,
       A.DEBITOR_KOMMNR2,
       A.DEBITOR_TEILELIEFERNR, 
       D.DEPOTID, 
       D.DEPOTNUM, 
       D.MATCHCODE, 
       D.NAME, 
       D.KS_ID
from AUFTRAG A
join DEPOT D on D.DEPOTID = A.DEPOTID and D.VALID = 1 and D.KS_ID = 1
where A.AUFTRAGID in 
      (select AUFTRAGID from AUFTRAG_STATUS where VALID = 1 
           and CRTI = (select max(CRTI) from AUFTRAG_STATUS where AUFTRAGID = A.AUFTRAGID) 
           and [STATUS] = 9)

我可以成功连接表 [AUFTRAG] 和 [DEPOT],但是当涉及到最后一个 where 子句时,我无法弄清楚如何在 LINQ 中获取我的数据。

期待您的帮助。

更新 - 这是我到目前为止所做的:

var erfAuftr = (from auf in db.AUFTRAG
                join dep in (from dep in db.DEPOT
                             where dep.KS_ID == 1
                             select dep) on auf.DEPOTID equals dep.DEPOTID
                join a_s in
                     (from a_s in db.AUFTRAG_STATUS
                      group a_s by new
                      {
                           a_s.AUFTRAGID
                      } into grp
                      select new
                      {
                           AuftragId = grp.Key.AUFTRAGID,
                           Date = grp.Max(s => s.CRTI)
                      }) on auf.AUFTRAGID equals a_s.AuftragId                                   
                 select new
                 {
                      AuftragId = auf.AUFTRAGID,
                      AuftragNr = auf.AUFTRAGNR,
                      DebitorId = auf.DEBITORID,
                      KVNr = auf.DEBITOR_KOMMNR2,
                      TL = auf.DEBITOR_TEILELIEFERNR,
                      DepotId = dep.DEPOTID,
                      DepotNum = dep.DEPOTNUM,
                      DepotMatchcode = dep.MATCHCODE,
                      DepName = dep.NAME1,
                      WEDate = a_s.Date
                  });

但我仍然不知道如何检查 [STATUS] = 9

您可以将过滤器添加为:

select new
{
    AuftragId = grp.Key.AUFTRAGID,
    Date = grp.Where(c=>c.STATUS == 9).Max(s => s.CRTI)
}) on auf.AUFTRAGID equals a_s.AuftragId

我终于通过使用以下表达式让它工作了:

Date = grp.Where(g => g.CRTI == grp.Max(s => s.CRTI) && g.STATUS == 9).Max(s => s.CRTI)

谢谢你的帮助!