以下應該工作(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