这个应该很容易。
我有一张包含记录的评论表。 列是EntityID,UserID,Body,DateModified。 用户可以为实体提交多个条目。 我想为每个UserID选择所有给定实体的最新条目的评论。
所以表格看起来像这样:
EntityID UserID Body DateModified
1 101 "hey" 8/22/2010 11:36:47 PM
1 101 "dude" 8/11/2010 04:15:43 PM
1 108 "brah" 8/21/2010 11:31:11 PM
1 108 "sup?" 8/14/2010 10:00:00 PM
我有这样的事情:
var itemReviews = db.Reviews
.Where(x => x.EntityID == EntityID)
.OrderByDescending(x => x.DateSubmitted)
;
我需要添加什么才能获取最新EntityID的记录?
感谢。
答案 0 :(得分:3)
为了获得最新的单一评论:
var mostRecentReview = db.Reviews
.Where(x => x.EntityID == EntityID)
.OrderByDescending(x => x.DateSubmitted)
.First();
为了获得每位用户的最新评论:
var reviews = db.Reviews
.Where(x => x.EntityID == EntityID)
.GroupBy(x => x.UserID)
.Select(gr => new {
UserID = gr.Key,
MostRecentReview = gr.OrderByDescending(x => x.DateSubmitted)
.First()
});
答案 1 :(得分:-1)
如果您想要返回一组项目(sql top / limit),您可以使用Take
var itemReviews = db.Reviews
.Where(x => x.EntityID == EntityID)
.OrderByDescending(x => x.DateSubmitted)
.Take(4);
如果您还想进行一些分页,可以使用Skip
var itemReviews = db.Reviews
.Where(x => x.EntityID == EntityID)
.OrderByDescending(x => x.DateSubmitted)
.Skip(pageNo *pageSize).Take(pageSize);
答案 2 :(得分:-1)
你可以使用多种方式,其中一种方式是:
var mostRecentReview = db.Reviews
.Where(x => x.EntityID == EntityID).Max(x =>x.DateModified);