在实体框架中获取具有类别的类别的类别

时间:2013-12-13 01:12:30

标签: asp.net linq entity-framework

我有两个名为:

的表
Categories
Posts

在类别中我保存我的类别:

CategoryID CategoryTitle
1          HTML
2          CSS

在帖子中我有这样的数据:

PostTitle  PostContent CategoryID

现在我想列出每个类别的帖子计数的类别 你能给我一个查询吗? 我使用了这个查询:

var cats = (from c in contecxt.Categories select new {
   CategoryID,
   CategoryTitle
   Count = (from p in context.Posts where p.CategoryID == c.CategoryTitle).Count()
}).ToList();

2 个答案:

答案 0 :(得分:3)

如果您正在使用EF,并且正确设置了外键关系,那么您的Category对象上的导航属性应该是Post的集合。在这种情况下,您需要做的就是使用LINQ的扩展方法语法:

var cats = context.Categories.Select(cat => 
              new { cat.CategoryID, cat.CategoryTitle, PostCount = cat.Posts.Count() })

答案 1 :(得分:0)

你可以试试这个 -

var cats = ctx.Categories.GroupBy(item => item.CategoryTitle)
                        .Select(g => new
                        {
                            CategoryTitle = g.Key,
                            Count = g.Sum(x => x.Posts.Count())
                        }
                                      );