如何使用 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();
我有 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();