我有两个表:Book 和 Chapter
Book
ID
Title
Author
Chapter
ChapterID
BookID
Title
我在 Controller 中有一个方法,它应该显示一本书的所有章节的列表。但是,它显示 Chapter 表中的所有元素,而不是与 BookID 匹配的元素
这是我的方法:
public ActionResult ViewChapters()
{
var chapters = db.Chapters
.Where(x => x.BookId == x.Book.ID)
.Include(x => x.Book).ToList();
return View(chapters);
}
我猜我的 linq 查询有问题。
最佳答案
您应该将书籍的 ID 传递给该方法,否则代码无法知道您正在引用哪本书。
public ActionResult ViewChapters(Guid bookId)
{
var chapters = db.Chapters
.Where(x => x.BookId == bookId)
.Include(x => x.Book).ToList();
return View(chapters);
}
Where
谓词评估 db.Chapters
中的每个项目,并仅保留谓词返回 true 的项目。正如 Fabio 在评论中提到的,当您比较 x.BookId == x.Book.ID
时,结果对于 db.Chapters
集合中的每个项目都是 true。
关于c# - Linq 外键 |如何只显示具有特定外键的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071052/