Entity framework 实体框架-选择顶部

Entity framework 实体框架-选择顶部,entity-framework,select,Entity Framework,Select,我的表格中有以下数据作为示例 我想在实体框架中编写语法查询来归档以下SQL语法 SELECT a.* FROM tblDocMaps a inner join tblDoc b on a.CURRENTDOCID = b.CURRENTDOCID where b.FORMONTH IN( SELECT DISTINCT TOP 2 aa.FORMONTH FROM tblDoc aa inner join tblDocMaps bb on aa.

我的表格中有以下数据作为示例

我想在实体框架中编写语法查询来归档以下SQL语法

SELECT a.* FROM tblDocMaps a inner join tblDoc b
on a.CURRENTDOCID = b.CURRENTDOCID
where b.FORMONTH IN(
        SELECT DISTINCT TOP 2 aa.FORMONTH
        FROM tblDoc aa inner join tblDocMaps bb
        on aa.CURRENTDOCID = bb.CURRENTDOCID
        WHERE (aa.FORMONTH < GETDATE())
        AND (bb.INSTID=50)
        ORDER BY aa.FORMONTH DESC
    )
and a.INSTID=50

我怎样写才能得到我想要的结果?我想从tblDocMaps中检索最近2个月的所有记录,其中日期在tblDoc中定义。

如果您试图像使用SQL一样使用实体框架,则缺少它存在的大部分原因。实体框架查询应该更加有机,基于您的c实体类,而不是基于它们在数据库中的存储方式。如果您列出了实体类,我们应该能够帮助您构建一个查询来执行您需要的操作。tblDocMaps,tblDoc通过实体框架分别映射到对象调用DocMaps和Doc。我的查询正在尝试获取DocMaps的列表。
var filteredMaps = tblDocMaps.Where(map => INSTID == 50);

filteredMaps.Where(map => filteredMaps.Where(map => map.tblDoc.FORMONTH < DateTime.Now)
                                      .Select(map => map.tblDoc.FORMONTH)
                                      .Distinct()
                                      .OrderByDescending()
                                      .Take(2)
                                      .Contains(map.tblDoc.FORMONTH));