假设我正在实施一个博客,并希望根据最新活动显示最新帖子(因此新帖子上的最新时间戳或新评论或新评论)。我的对象结构是这样的:
Post
EntityCollection<Comment>
EntityCollection<Like>
现在,我只按照Post上的最新时间戳订购:
public IQueryable<Post> GetPosts()
{
return from post in _db.Posts
orderby post.CreatedDate descending
select post;
}
我如何修改它以便它在评论和喜欢上检查CreatedDate,所以我的订购是基于最新的活动,而不仅仅是Post createddate?
答案 0 :(得分:1)
您应该创建一个名为Actions
或Events
之类的通用表或类似的东西。此表应记录发生的每个事件 - 帖子,评论和喜欢。该表包含有关每个事件的泛型信息。该信息可以例如包括事件的时间,事件的类型,发起事件的用户id以及事件的唯一ID。有关事件的更多特定信息,您需要使用链接到通用表的特定表中的外键约束来连接到您的特定表。
使用这种结构,可以很容易地按排序顺序获取所有事件的列表,如果通用表中的timestamp列被编入索引,则效率很高。
答案 1 :(得分:1)
假设Like表和Comment表中的外键成员名为PostID,
List<Comment> lstComment
List<Like> lstLike
将查询更改为:
var posts = from p in lstPost
join c in lstComments on p.ID equals c.PostID
join l in lstLikes on p.ID equals l.PostID
orderby p.CreateDate, c.ActionDate, l.ActionDate
select p;
祝你好运!
答案 2 :(得分:1)
在Post表上使用修改后的日期,每当在该帖子中添加评论时,将修改后的日期更新为当前时间,并使用modifiedDate进行排序。