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
集合中的每个项目的结果都是正确的。
我有两个 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
集合中的每个项目的结果都是正确的。