[英]Left Join to top 1 using LINQ to entites
我有一个实体列表,每个实体都有0> n个相关评论。 如果每个实体都存在一个评论,我想加入最新评论。 然后,我想返回以下最新评论的状态,但是无法通过CreatedDate Descending将lstReviews过滤到前1个。
var lstMainEntity = this.service.GetAllMainEntities();
var lstReviews = this.service.GetReviews();
var lst = from e in lstMainEntity
from review in lstReviews.Where(r => r.EntityID == e.EntityID).DefaultIfEmpty()
select new
{
ID = e.EntityID,
ReviewStatus = review != null ? review.IsComplete ? "Complete" : "Active"
}
我怎样才能做到最好?
我假设lstMainEntity
和lstReviews
是IQueryable<..>
。 如果它们是IEnumerable<..>
,则必须在ReviewStatus
赋值中进行空检查。 (如果它是IQueryable
性能应该更快)
var lst = from e in lstMainEntity
let review = lstReviews.Where(r => r.EntityID == e.EntityID)
.OrderByDescending(r => r.CreatedDate)
.FirstOrDefault()
select new
{
ID = e.EntityID,
ReviewStatus = review.IsComplete ? "Complete" : "Active"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.