考慮圖片中的數據庫模式。linq-to-entities連接3個表和分組語句
我需要一個LINQ到實體語句將檢索按作者分組作者和他們各自的書。例如,我想要顯示如下內容:
authorName8 bookTitle27 bookTitle35 bookTitle62 authorName37 bookTitle9 bookTitle51
另一個約束是分組項的主題必須可以通過方法返回。
任何人都可以制定連接和分組聲明(a)按作者姓名排序,(b)按作者姓名和書名排序?
考慮圖片中的數據庫模式。linq-to-entities連接3個表和分組語句
我需要一個LINQ到實體語句將檢索按作者分組作者和他們各自的書。例如,我想要顯示如下內容:
authorName8 bookTitle27 bookTitle35 bookTitle62 authorName37 bookTitle9 bookTitle51
另一個約束是分組項的主題必須可以通過方法返回。
任何人都可以制定連接和分組聲明(a)按作者姓名排序,(b)按作者姓名和書名排序?
您沒有提到您使用的是哪個版本的EF,或者您是否需要根據某些條件過濾作者,或者是通過某種條件過濾書籍。這將獲取所有的一般查詢將是這樣的:
List<Author> authorsWithBooks =
context.
Authors.
Include(a => a.Books). // For EF 4.1
/*Include("Books"). instead for previous versions of EF */
/*Where(a => !a.IsDeleted). if you want to filter the authors */
ToList();
如果你要過濾的藏書,你將不得不雖然寫一個更復雜的查詢。
:我有一個技術難題 - 可能是因爲我使用了代碼優先(?) - 讓我的方法適用於我的案例,但我傾向於相信Include方法可能會對分組技巧負責。 – user669226 2011-06-13 03:53:14
@Yakimich ::你如何控制作者姓名和書名的排序? – user669226 2011-06-13 09:37:45
要命令作者在'Include'之後添加'OrderBy(a => a.Name)'。不過,訂購這些書更具挑戰性。你使用EF 4.1嗎? – Yakimych 2011-06-13 10:14:33
var query =(來自MyDataContext.Aurthor選擇作者的顧客) 。包括(author => author.Books);
這將讓你所有的作者和渴望加載書籍的最佳性能。
'EF'生成了哪些模型? 'Author'和'Book'? – aligray 2011-06-12 08:55:35