Linq 外键 |如何只显示具有特定外键的元素?

Linq Foreign Key | How to display only the elements with a specific foreign key?

我有两个 table:书籍和章节

Book
ID
Title
Author

Chapter
ChapterID
BookID
Title

我在控制器中有一个方法应该显示一本书所有章节的列表。但是,它显示章节 table 中的所有元素,而不是与 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 中的每个项目,并且只保留谓词 returns 为真的项目。正如 Fabio 在评论中提到的,当您比较 x.BookId == x.Book.ID 时,db.Chapters 集合中的每个项目的结果都是正确的。