次の LINQ ステートメントを検討してください。
var posts = db.Posts
.Where(p => p.Votes.Count > 0 && p.User.Confirmed)
.Select(p => new
{
PostId = p.PostId,
Votes = p.Votes.Count(),
Hours = EntityFunctions.DiffHours(DateTime.UtcNow, p.Timestamp)
})
.Select(p1 => new
{
PostId = p1.PostId,
Votes = p1.Votes,
Group = p1.Hours <= 24 ? 24 :
p1.Hours <= 168 ? 168 :
p1.Hours <= 720 ? 720 : 0
})
.Where(p2 => p2.Group != 0);
投稿のリストをそれぞれのグループ (24 時間、168 時間、および 720 時間) に正常にグループ化します。
ただし、今はグループごとPostId
に を持つを取得する必要があります。Max
Votes
それ、どうやったら出来るの?