C# 实体框架查询嵌套查询

C# 实体框架查询嵌套查询,c#,sql,entity-framework,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 N

我不熟悉实体框架,正在尝试将以下查询转换为正确的函数调用

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)
我知道这个查询符合我的要求,但是我不知道如何将其转换为entitiy框架

这是我的尝试

var prevSelectedNodes = db.reportContents.Where(
f => f.fitId == id).Select(
f => f.nodeId).Distinct().ToList();
我需要在where调用中添加一个.Select()。然而,这样的事情似乎是不可能的


提前谢谢你

因为无法生成两个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() ; 

reportId是惟一的(pk)吗?看起来Ksven已经回答了,但是我的建议是,如果你是EF的新手,不要把它看作是查询一堆表。EF由对象而不是关系表组成。如果将第一条linq语句添加到第二条语句中,我希望它生成一条SQL语句。正如所写,它应该在一条语句中完成。如果第一行以.ToList()结尾,它将强制单独执行。基本上,它收集工作,直到实际需要结果为止。