C# 使用LINQ按顺序检查多个表上的时间戳

C# 使用LINQ按顺序检查多个表上的时间戳,c#,linq-to-sql,C#,Linq To Sql,假设我正在实现一个博客,并希望根据最新的活动显示最新的帖子(因此,新帖子或新评论或类似内容上的最新时间戳)。我的对象结构如下: Post EntityCollection<Comment> EntityCollection<Like> Post 实体收集 实体收集 现在,我只按邮递上的最新时间戳订购: public IQueryable<Post> GetPosts() { return from post in

假设我正在实现一个博客,并希望根据最新的活动显示最新的帖子(因此,新帖子或新评论或类似内容上的最新时间戳)。我的对象结构如下:

Post
 EntityCollection<Comment>
 EntityCollection<Like>
Post
实体收集
实体收集
现在,我只按邮递上的最新时间戳订购:

public IQueryable<Post> GetPosts()
        {
            return from post in _db.Posts
                   orderby post.CreatedDate descending
                   select post;
        }
public IQueryable GetPosts()
{
在_db.Posts中从post返回
orderby post.CreatedDate降序
选择职位;
}

我如何修改它,以便它检查注释和类似内容上的CreatedDate,从而使我的排序基于最新的活动,而不仅仅是创建后的CreatedDate?

您应该创建一个名为
Actions
Events
或类似内容的通用表。此表应记录发生的每个事件-帖子、评论和类似事件。该表包含有关每个事件的常规信息。例如,该信息可以包括事件的时间、事件的类型、发起事件的用户id和事件的唯一id。有关事件的更多具体信息,您需要在链接到泛型表的特定表中使用外键约束连接到特定表


使用这种结构,可以很容易地按排序顺序获取所有事件的列表,如果对通用表中的时间戳列进行索引,则会非常有效。

假设Like表和注释表中的外键成员为PostID

List<Comment> lstComment
List<Like> lstLike

祝你好运

在Post表上使用modifiedDate,并且每当向该Post添加注释时,都会将modifiedDate更新到当前时间并使用modifiedDate进行排序。

这不是对您问题的回答(因此我要发表评论),但我建议,这可能是SQL Server视图或存储过程更好地处理的问题。SQL Server在进行此类排序时会更加高效,生成的LINQ到SQL查询可能会非常糟糕。谢谢……这可能是我最容易的解决方案,但@Mark Byers发布的解决方案会是更好的长期解决方案吗?
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;