这是我的域名的简化版本:
class Document
{
int id {get;set;}
string name {get;set;}
List<Version> Version {get;set;}
}
class Version
{
int id {get;set;}
string name {get;set;}
List<VersionActivity> VersionActivity {get;set;}
[ForeignKey]
int DocumentID {get;set;}
}
class VersionActivity
{
int id {get;set;}
DateTime DateOfActivity {get;set;}
string ActivityName {get;set;}
[ForeignKey]
int VersionID {get;set;}
}
查找返回最新20个版本的LINQ查询,但不能存在重复文档。
示例:
我只想要一次往返数据库。如果使用SQL更容易,我可以使用它,尽管我更喜欢LINQ查询。
感谢。
答案 0 :(得分:0)
我认为您可以将问题更改为“按更新日期的后续顺序列出前20个文档”。这是查询
from d in documents
let latestVersion = (from v in d.Version
let latestDate = v.VersionActivity.OrderByDescending (va => va.DateTime).Select(va => va.DateOfActivity).First()
orderby latestDate descending
select {Version = v, LatestDate = latestDate}).First()
select new {Document = d, Version = latestVersion};
或者,如果每个文档的所有版本号都是增量的,只需查询
即可from d in document
let latestVersion = d.Version.OrderByDescending(v => v.Id).First()
select new {Document = d, Version = latestVersion};
答案 1 :(得分:0)
//GET parent IDS
var hiringStageIds = dbContext.JobRequisitionHiringStageSubStageLink.
Where(x => x.RequisitionTemplateID == RequisitionTemplatedId).Select(f =>
f.HiringStageID
).Distinct().ToList();
var workflowIds = dbContext.JobRequisitionHiringStageSubStageLink.Where(d => hiringStageIds.Contains(d.HiringStageID)).Select(f => new
{ f.HiringStageID,
child =new { childs= dbContext.JobRequisitionHiringStageSubStageLink.Where(m=>m.HiringStageID==f.HiringStageID).Select(s=>s.HiringStagesWorkflowID).ToList()
}
}).GroupBy(x => x.HiringStageID).Select(y => y.First());