我已经挣扎了一段时间......
我必须为每个博客评论实施计数,这些博客评论已放在博客帖子上。
public class Blog
{
public int BlogId { get; set; }
public string BlogPostName { get; set; }
// ... //
public virtual ICollection<BlogPostComments> BlogPostComments { get; set; }
}
public class BlogPostComments
{
public int BlogPostCommentsId { get; set; }
public string NameOfUser { get; set; }
public string CommentsOfUser { get; set; }
public Nullable<System.DateTime> PostedDate { get; set; }
public Nullable<int> BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
他们是一对多关系 - 1 BlogPost可以有0个或更多BlogPostComments。 例如,我有一个整数数组int [] id的输入,其中包含BlogId 1,2和3.我想以字典格式获取与这些ID注释相关的所有内容。 目前,我可以通过此
获取所有BlogPost的评论数量public IHttpActionResult Get([FromUri] int[] ids)
{
var blogPosts = (from blogPost in EntityContext.BlogPostComments
where ids.Contains(customer.BlogId.Value)
select blogPost);
int numberOfAllComments = blogPosts.Count();
return Ok(numberOfAllComments);
}
让我们说 - 首先BlogPost有3条评论,第二条BlogPost有5条评论,第三条BlogPost有7条评论。
是否有办法将第一篇文章的评论与第二篇文章的评论分开,并将其作为与实体框架的关键值对返回。请帮我构建或修改我的查询。
答案 0 :(得分:2)
你应该可以这样做:
var postsAndComments = blogRepo
.Where(blog => ids.Contains(blog.BlogId))
.Select(p => new { id = p.BlogId, comments = p.BlogPostComments.Count() })
.ToDictionary(p => p.id, p => p.comments);