Asp.net mvc “从其他实体中选择前2名”中的实体框架查询
我不熟悉实体框架。我想通过ASP.NET MVC项目中的实体框架环境存档此查询 这是我的查询应该执行的: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我会保持简单。首先获取两个日期,然
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;