1
我有3个表 - 发布,评论,赞
评论已连接到帖子由TypeId和PostType,喜欢连接到帖子和评论TypeId和类型,喜欢有一列LikeType,其中0表示喜欢,1分表示不喜欢
现在我想张贴有列表和两者都应该包含各自的顶和踩LINQ查询与组连接和计数需要重构
var post = (from c in Db.Comments
where c.Type == Model.PostType.Post.ToString()
group c by c.TypeId
into com
join p in Db.Posts on com.Key equals p.Pid
where p.Pid == postId
select new
{
Post = p,
Comments = com.Select(c=>new{Comment=c,like =Db.Likes.Count(
l => l.TypeId==c.CommentId&&l.Type==Model.PostType.Comment.ToString()&&l.LikeType==(int)Model.LikeType.Like)
,dislike =Db.Likes.Count(
l => l.TypeId==c.CommentId&&l.Type==Model.PostType.Comment.ToString()&&l.LikeType==(int)Model.LikeType.Dislike)}),
Likes = Db.Likes.Count(l => l.TypeId == p.Pid && l.Type == Model.PostType.Post.ToString() && l.LikeType == (int)Model.LikeType.Like),
Dislikes = Db.Likes.Count(l => l.TypeId == p.Pid && l.Type == Model.PostType.Post.ToString() && l.LikeType == (int)Model.LikeType.Dislike),
}).FirstOrDefault();
我得到的结果,但生成的查询好像是大的,所以我如何优化。