如何使用 EF Core Linq 在记录中获取子嵌套列表

How to get a child nested list within a record using EFCore Linq

我有 3 个表 1.Books 2.PO 3.Books_PO。我想使用 books_po ref table 提取单个 PO 记录,但我想要该记录中的图书列表。

 Books                    PO                 books_PO
ID   Name             ID    ponumber       poId    bookId
1    book1            3     1234           3       2
2    book2            5     2323           3       3
3    book3

当我需要 2 本书的列表时,我当前的查询只返回一本书。如果我 return .ToList() 我得到采购订单的 2 条记录,但仍然是一本书。我很想知道我尝试做的事情是否可行?

ctx.books_po.Where(a => a.po.Id == 3).Include(b => b.Books).FirstorDefault();

我认为您正在寻找 GroupBy

var singleRecord = ctx.books_po
.Where(a => a.po.Id == 3)
.Include(b => b.Books)
.GroupBy(a => a.po, a => a.Books).FirstOrDefault();

您将获得一条包含两个字段的记录 singleRecord.Key 和 singleRecord.ToList() 会是那个po下的所有bookIds (== 3)

为什么不使用 Books dbContexts 而不是 book_po?

ctx.Books.Where(x => x.books_po.poId == 3).ToList();