计算帖子评论实体框架

时间:2017-02-17 18:24:23

标签: c# .net entity-framework

我已经挣扎了一段时间......

我必须为每个博客评论实施计数,这些博客评论已放在博客帖子上。

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条评论。

是否有办法将第一篇文章的评论与第二篇文章的评论分开,并将其作为与实体框架的关键值对返回。请帮我构建或修改我的查询。

1 个答案:

答案 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);