我有两个表:书和章
Book
ID
Title
Author
Chapter
ChapterID
BookID
Title
我在Controller中有一个方法,它应该显示一本书的所有章节的列表。但是,它显示章节表中的所有元素,而不是与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
集合中的每个项目都是正确的。