gpt4 book ai didi

c# - 如何在 LINQ 中写这个

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:52 24 4
gpt4 key购买 nike

我的数据库中有 3 个表

Group [GroupId, GroupName]
GroupUser [GroupId, AuthorId]
Author [AuthorId, AuthorName]
Book [BookId, AuthorId, BookName]

如何获取特定 GroupId 的图书列表?

我试过这个 LINQ 语句:

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<GroupUser>(p => p.User);
dlo.LoadWith<User>(p => p.Books);
context.LoadOptions = dlo;

List<Book> books = context.GroupUser
.Where(p => p.GroupId == groupId)
.Select(p => p.User.Books)
.ToList();

但是,这不起作用,因为编译器会提示:

无法将类型 System.Collections.Generic.List[System.Data.Linq.EntitySet[Book]] 隐式转换为 System.Collections.Generic.List[Book]

作为最后的手段,我想也许只是选择 GroupUser 的列表,然后遍历每个子对象,然后手动将其添加到我的 books 变量中,但对我来说,这似乎是 LINQ 的额外工作应该做的。

最佳答案

根据 RideUser.Books 的类型(我假设为 IList<Book> ),您只需将 Select 更改为 SelectMany。选择将返回 IEnumerable<IList<Book>>而 SelectMany 会将结果展平为 IEnumerable<Book>然后您可以在以下位置调用 ToList():

List<Book> books = context.GroupUser
.Where(p => p.GroupId == groupId)
.SelectMany(p => p.RideUser.Books)
.ToList();

关于c# - 如何在 LINQ 中写这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com