Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 加载分层数据的实体框架查询_Linq_Entity Framework - Fatal编程技术网

Linq 加载分层数据的实体框架查询

Linq 加载分层数据的实体框架查询,linq,entity-framework,Linq,Entity Framework,如果我有一个SQL Server表,它看起来像这样,一些作者出现在多行中(这意味着他们写了多本书) 是否有任何方法可以编写一个实体框架表达式来填充类似于以下内容的内存布局 class AuthorInfo { int ID; string Name; IEnumerable<int> BookIDs; } class AuthorInfo { int-ID; 字符串名; IEnumerable BookIDs; } 换句话说,我希望每个作者都有一个对象,但

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

是否有任何方法可以编写一个实体框架表达式来填充类似于以下内容的内存布局

class AuthorInfo
{
    int ID;
    string Name;
    IEnumerable<int> BookIDs;
}
class AuthorInfo
{
int-ID;
字符串名;
IEnumerable BookIDs;
}
换句话说,我希望每个作者都有一个对象,但是BooksIDs集合包含该作者的所有书籍

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

这行吗?(我还没试过。)


不清楚您如何访问数据。你用EF还是L2S?当使用EF时,您是先使用代码还是EDMX文件?根据问题标题:我正在使用EF。我没有先使用代码。
class AuthorInfo
{
    int ID;
    string Name;
    IEnumerable<int> BookIDs;
}
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)
});