【问题标题】:Entity Framework Query to Load Hierarchical Data用于加载分层数据的实体框架查询
【发布时间】:2011-11-29 17:00:50
【问题描述】:

如果我有一个看起来像这样的 SQL Server 表,其中一些作者出现在多行中(意味着他们创作了多本书)。

BookID INT;
BookTitle NVARCHAR(100);
AuthorID INT;
AuthorName NVARCHAR(100);

有没有办法编写一个实体框架表达式来填充类似于以下的内存布局?

class AuthorInfo
{
    int ID;
    string Name;
    IEnumerable<int> BookIDs;
}

换句话说,我会为每个作者创建一个对象,然后让 BooksIDs 集合包含该作者的所有书籍。

我知道我可以首先加载唯一作者,然后迭代生成的集合以添加每个作者的所有匹配书籍。但是有没有办法用一条 linq 语句来做这样的事情?

【问题讨论】:

  • 不清楚您如何访问您的数据。你用EF还是L2S?使用 EF 时,您使用 Code First 还是 EDMX 文件?
  • 根据问题标题:我正在使用 EF。我没有先使用代码。

标签: linq entity-framework


【解决方案1】:

这行得通吗? (我没试过。)

var authorInfos = DbContext.BooksAuthors
.GroupBy (ba => new { AuthorId = ba.AuthorId, AuthorName = ba.AuthorName })
.Select (g => new AuthorInfo { 
    ID = g.Key.AuthorId, 
    Name = g.Key.AuthorName,
    BookIDs = g.Select (ba => ba.BookId)
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多