【问题标题】:How to transform cross apply with select top to linq如何使用 select top 将交叉应用转换为 linq
【发布时间】:2015-12-24 11:35:06
【问题描述】:

我有一个复杂的查询,必须转换为 linq。我不知道如何使用 select top 1 语句和 select sum 转换交叉应用。这是查询:

 SELECT C.LASTNAME, C.FIRSTNAME, U.IMP_REPORT_NAME, C.CLIENTID, U.IMP_USER_REPORT_ID, U.IMP_REPORT_DATE, U.EMPLOYEEID, TBL_RATINGS.TOTAL AS TOTAL_RATING 
 FROM CLIENTS AS C

 CROSS APPLY ( SELECT TOP 1 IMP_USER_REPORT_ID, IMP_REPORT_NAME, IMP_REPORT_DATE, EMPLOYEEID 
 FROM IMPORT_USER_REPORTS 
 AND CLIENTID = C.CLIENTID 
 AND IMP_REPORT_DATE <= @fromDate
 ORDER BY IMP_REPORT_DATE DESC, IMP_USER_REPORT_ID DESC 
 ) AS U 

 CROSS APPLY ( SELECT SUM(ANSWER_RATING) AS TOTAL 
 FROM IMPORT_USER_ANSWERS 
 WHERE IMPORT_USER_ANSWERS.IMP_USER_REPORT_ID = U.IMP_USER_REPORT_ID 
 ) AS TBL_RATINGS 

 WHERE C.ACTIVE = 1 
 ORDER BY LASTNAME, FIRSTNAME 

【问题讨论】:

  • 请不要只发布 SQL 并要求转换。至少显示一个类模型,以便导航属性和关联的多样性是可见的。此外,请说明您的目标是什么类型的 LINQ(针对实体?),展示您自己的初步努力。他们向我们解释的内容比您想象的要多。

标签: sql linq


【解决方案1】:

CROSS APPLY 类似于​​需要更复杂条件的 JOIN,因此 WHERE 可以按照建议的 here 使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2015-04-25
    • 1970-01-01
    • 2019-06-02
    • 2011-06-10
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多