以下应该工作(LinqToEntities):
var categories = from c in oc.Categories
select new
{
CategoryId = c.Id,
c.Value,
Count = c.Blogs.Count()
}
这会给你的类别ID的列表和值的对于每个类别ID,您可以获得该类别中的博客数量。
编辑:给你的评论中的问题给出一个答案:这是不可能在LinqToEntities中,但你可以在实体SQL中做到这一点。
var results = new ObjectQuery<DbDataRecord>(
@"SELECT y, COUNT(y)
FROM MyEntities.Blogs AS b
GROUP BY YEAR(b.CreatedDate) AS y", entities).ToList();
var nrBlogsPerYear = from r in results
select new { Year = r[0], NrBlogs = r[1] };
在实体SQL查询中,应该用您的上下文的名称替换MyEntities
。
编辑:正如我刚才通过克雷格评论发现,在今年is possible在L2E分组,所以你可以写你的查询是这样的:
var nrBlogsPerYear = from b in oc.Blogs
group b by b.CreatedDate.Year into g
select new { Year = g.Key, NrBlogs = g.Count() };
谢谢!它工作完美。我不知道我们可以在没有定义具有这些属性的类的情况下“选择新的”。 – tempid 2010-08-14 19:44:42
如果你不介意的话,还有一个简单的问题。我如何编写一个L2E查询来返回Year和当年的博客数量。 Blog.CreatedDate有最新信息,我寻找类似 年计数 ----------- 2010年第12 2009年45 等。这样我就可以像UI显示2010 (12),2009(45)..谢谢! – tempid 2010-08-14 19:56:02
您也可以在L2E中进行年份分组。 [L2E支持Year属性](http://msdn.microsoft.com/en-us/library/bb738681.aspx) – 2010-08-16 13:55:45