linq-to-entities连接3个表和group-by语句

时间:2011-06-12 08:40:20

标签: linq entity-framework join linq-to-entities group-by

考虑图片中的数据库模式。

我需要一个linq-to-entities语句来检索由作者分组的作者及其各自的书籍。例如,我想显示如下内容:

authorName8
  bookTitle27
  bookTitle35
  bookTitle62
authorName37
  bookTitle9
  bookTitle51

附加约束是分组项目的对象必须可以通过方法返回。

任何人都可以制定连接和分组声明(a)按作者姓名排序,(b)按作者姓名和书名排序吗?

2 个答案:

答案 0 :(得分:1)

您没有提到您正在使用哪个版本的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();

如果您想过滤图书馆藏,您必须写一个更精细的查询。

答案 1 :(得分:0)

var query =(来自MyDataContext.Aurthor中的客户选择作者)                 。包括(作者=&gt; author.Books);

这将使所有作者和渴望加载书籍以获得最佳性能。