首页 > 解决方案 > 如何使用 EFCore Linq 在记录中获取子嵌套列表

问题描述

我有 3 个表 1.Books 2.PO 3.Books_PO。我想使用 books_po ref 表提取单个 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

当我需要两本书的清单时,我当前的查询只带回一本书。如果我返回.ToList(),我会得到 2 条 PO 记录,但仍然是一本书。我很想知道我想做的事情是可能的吗?

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

标签: c#linqef-core-2.2

解决方案


我认为您正在寻找 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 下的所有 bookId (== 3)


推荐阅读