实体框架查询嵌套查询

时间:2014-07-01 15:13:36

标签: c# sql entity-framework

我是实体框架的新手,我正在尝试将以下查询转换为正确的函数调用。

Select Distinct a.nodeId FROM 
    (SELECT *
    FROM reportContents
    Where fitId = '29' and reportId = 
       (select max(reportId) 
       from reportContents
       where fitId = '29')
     ) a Where (a.nodeId IS NOT NULL)

我知道这个查询符合我的要求,但是我不确定如何将其转换为权利框架!

这是我的尝试。

var prevSelectedNodes = db.reportContents.Where(
f => f.fitId == id).Select(
f => f.nodeId).Distinct().ToList();

我需要以某种方式将.Select()放在where调用中。然而,这种事似乎不可能

提前谢谢!

1 个答案:

答案 0 :(得分:2)

因为你不能制作两个LINQ嵌套的lambda表达式。您可以通过两个请求来完成:

var maxReportId = db.reportContents.Where(r => r.fitId = "29").Max(r => r.RepordId);
var result = db.reportContents.Where(r => r.fitId == "29" && r.reportId == maxReportId && r.nodeId != null).Select(a => a.nodeId).Distinct().ToList() ;