Linq查询连接两个表并从第一个表返回对象 - 使用了PagedList

时间:2016-05-24 06:56:16

标签: entity-framework linq lambda pagedlist

我使用Entity框架(代码冷杉模型) 我有表Posts(postID | Title | ...)和表Comments(commentID | Comment | postID | userID | CommentDate | ...)

我想要一个基于评论中userID标准的帖子列表。

var listOfPosts = (from p in db.Posts
                    join coment in db.Comments
                    on p.postID equals coment.postID                                
                    where coment.userID == "Some value"
                    orderby coment.CommentDate descending
                    select p).ToList();


return View("ReportList", listOfReports.ToPagedList(pageNumber, pageSize));

我也使用PagedList来分页。

但我希望结果是PostID分组,所以我修改了代码如下

var listOfPosts = (from p in db.Posts
                    join coment in db.Comments
                    on p.postID equals coment.postID
                    where coment.userID == "Some value"
                    orderby coment.CommentDate descending
                    group p by p.postID into newP
                    select newP).ToList();

这里的问题是,第二个查询的结果返回{Page 1}}和PagedList的List<IGrouping<int, Posts>>方法仅适用于ToPagedList

如何根据条件和评论顺序更改查询以返回不同的帖子列表? 您可以使用lambda表达式或查询语法。

1 个答案:

答案 0 :(得分:1)

您可以尝试在外部查询中使用子查询和distinct,如下所示:

var listOfPosts = (from b in ((from p in db.Posts
                               join coment in db.Comments on p.postID equals coment.postID
                               where coment.userID == "Some value"
                               orderby coment.ComentDate descending
                               select p).ToList())
                   select b).Distinct().ToList();