如何从复杂的 SQL 创建 LINQ?

我有这个 SQL 查询:


 SELECT D.ID

 FROM Documents AS D

 INNER JOIN DocClasses AS DC WITH (NOLOCK) 

 ON D.DocClass = DC.ID

 INNER JOIN DocSubClasses AS DSC WITH (NOLOCK) 

 ON D.DocSubClass = DSC.ID AND DSC.DocClassID = DC.ID

 INNER JOIN DocPathFolders AS F WITH (NOLOCK) 

 ON D.DocPathFolderID = F.ID

 WHERE 

    DC.ShortName = 'PAY' AND DSC.Name = 'xxxxx' 

    AND UPPER(F.Description) = 'READY TO SEND'

我正在尝试将此查询转换为 LINQ。这是我到目前为止所做的:


 from D in ctx.Documents

 join DC in ctx.DocClasses on D.DocClass equals DC.ID

 join DSC in ctx.DocSubClasses 

     on new { D.DocSubClass, DSC.DocClassID } equals new { DSC.ID, DC.ID }

 join F in ctx.DocPathFolders 

     on D.DocPathFolderID equals F.ID

 where 

     DC.ShortName == "PAY" 

     && DSC.Name == "xxxxx" 

     && (F.Description).ToUpper() == "READY TO SEND"

 select D.ID;

我在这一行遇到错误:


join DSC in ctx.DocSubClasses on new { D.DocSubClass, DSC.DocClassID } equals new { DSC.ID, DC.ID }

在这里,我收到以下错误:


名称“DSC”不在“等于”左侧的范围内


名称“DC”不在“等于”右侧的范围内


我是 LINQ 的新手,这就是我无法解决这些错误的原因。我想对上述任何建议。谢谢。


白猪掌柜的
浏览 183回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP