实体框架:多对多计数和求和

时间:2009-05-16 07:19:40

标签: c# entity-framework linq-to-entities

我正在使用实体框架。我有很多关系文章< - >分类。每篇文章都属于多个类别,每个类别可以属于多个文章。我可以在每个类别中获得COUNT个文章:

public IEnumerable<MenuCategory> GetMenuCategories()
{
   return (from c in db.CategorySet.Include("Articles")
     orderby c.CategoryName
     select new MenuCategory
     {
        CategoryID = c.CategoryID,
        CategoryName = c.CategoryName,
        CountOfCategory = c.Articles.Count()
      });

}

但我还需要获得文章总数,以便我可以计算每个类别中文章的百分比。任何人都可以通过扩展上面的代码并且不单独调用数据库来告诉我如何做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:0)

为了做到这一点,代码需要知道文章的总数。

如果要避免第二次数据库调用,则可以在数据库中执行计算并将其作为结果集中的额外列返回。有不同的方法来实现这个,但一个是使用视图并具有SQL函数TotalArticles,那么你的calc只是articleCount / TotalArticles。我对实体框架了解不多,所以我不确定这是否可行。

如果你不能在数据库中进行计算,那么我想第二次数据库调用是不可避免的,尽管它只是一个文章的数量,所以几乎没有增加太多的开销。您可以在主要通话之前拨打此电话,然后以与上述类似的方式将值添加到您的结果中,即PercentageOfArticles = c.Articles.Count() / articleCount