Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc “从其他实体中选择前2名”中的实体框架查询_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc “从其他实体中选择前2名”中的实体框架查询

Asp.net mvc “从其他实体中选择前2名”中的实体框架查询,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我不熟悉实体框架。我想通过ASP.NET MVC项目中的实体框架环境存档此查询 这是我的查询应该执行的: SELECT * FROM Documents WHERE CREATEDATE IN( SELECT DISTINCT TOP 2 FORMONTH FROM DocHistory WHERE FORMONTH < GETDATE() ORDER BY FORMONTH DESC ) 致以最良好的祝愿 Veasna我会保持简单。首先获取两个日期,然

我不熟悉实体框架。我想通过ASP.NET MVC项目中的实体框架环境存档此查询

这是我的查询应该执行的:

SELECT * FROM Documents
WHERE CREATEDATE IN(
    SELECT DISTINCT TOP 2 FORMONTH
    FROM DocHistory 
    WHERE FORMONTH < GETDATE()
    ORDER BY FORMONTH DESC
)
致以最良好的祝愿


Veasna

我会保持简单。首先获取两个日期,然后获取所需的文档。像这样:

var dates = DocHistory.Where(dh => dh.FORMONTH < DateTime.Now).OrderByDescending(FORMONTH).Take(2);
var results = Documents.Where(d => dates.Contains(dates));
var dates=DocHistory.Where(dh=>dh.formmonthdates.Contains(dates));

好的,把它分成两部分

SELECT DISTINCT TOP 2 FORMONTH
FROM DocHistory 
WHERE FORMONTH < GETDATE()
ORDER BY FORMONTH DESC
每月选择不同的前2名
来自历史
其中FORMONTH
这就变成

DocHistory.Where(dh => dh.FORMONTH < DateTime.Now)
          .OrderByDescending(dh => dh.FORMONTH)
          .Take(2);
DocHistory.Where(dh=>dh.formmonthdh.FormMonth)
.采取(2);
所以我们现在有两个月的时间

Documents.Where(doc=> DocHistory.Where(dh => dh.FORMONTH < DateTime.Now)
                                .OrderByDescending(dh => dh.FORMONTH)
                                .Take(2)
                                .Select(q => q.FORMONTH)
                                .Contains(doc.CREATEDATE.Month))
Documents.Where(doc=>DocHistory.Where(dh=>dh.FORMONTHdh.FormMonth)
.采取(2)
.选择(q=>q.FORMONTH)
.Contains(doc.CREATEDATE.Month))

首先,让我们描述一下内部查询:

DocHistory.Select(dh => dh.FORMONTH)
          .Where(dt => dt < DateTime.Now)
          .Distinct()
          .OrderByDescending()
          .Take(2)
DocHistory.Select(dh=>dh.FORMONTH)
.Where(dt=>dt
那么完整查询将是:

Documents.Where(d => DocHistory.Select(dh => dt.FORMONTH)
                               .Where(dt => dt < DateTime.Now)
                               .Distinct()
                               .OrderByDescending()
                               .Take(2)
                               .Contains(d.CREATED));
Documents.Where(d=>DocHistory.Select(dh=>dt.FORMONTH)
.Where(dt=>dt
您可以执行以下操作

var date = DateTime.Now;

from d in db.Documents
where ( from t in db.DocHistory
        where FORMMONTH < date
        select FORMMONTH).OrderByDescending()
                         .Distinct()
                         .Take(2).Contains(d.CREATEDATE)
select d;
var date=DateTime.Now;
来自数据库文档中的d
其中(从数据库中的t开始)
其中FORMMONTH

希望这将对您有所帮助

您是否介意添加一个解释,说明它的作用和工作原理?
var date = DateTime.Now;

from d in db.Documents
where ( from t in db.DocHistory
        where FORMMONTH < date
        select FORMMONTH).OrderByDescending()
                         .Distinct()
                         .Take(2).Contains(d.CREATEDATE)
select d;