c# - 实体框架多对多关系查询
问题描述
我正在做一个项目,我有两个彼此相关的模型。书籍和书籍类别。我被困在一个功能上,我想显示某个类别的所有书籍。就像,显示“恐怖”类别中的所有书籍。我知道它在带有 .Include() 函数的某个地方的小巷中,但我遇到了死胡同,需要一些指针来解决这个问题 - 谢谢!
这就是我的模型的样子:
模型/book.cs
class Book
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public int Price { get; set; }
public int Amount { get; set; }
public List<BookCategory> BookCategories { get; set; }
}
模型/BookCategory.cs
class BookCategory
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
到目前为止,我知道我可以将类别包含在书籍中
db.Books.Include("BookCategory");
但我不知道如何匹配标准来告诉我只想获得某个类别的书籍
解决方案
如果要按类别过滤,可以执行以下操作:
db.Books
.Include("BookCategory")
.Where(b => b.BookCategories.Any(c=>c.Name == "Horror"));
这应该可行,尽管我现在更习惯于实体框架核心。
推荐阅读
- c# - LINQ 查询以组合两个字符串 [] 数组
- android - Admob 错误 - onAdFailedToLoad 错误代码 3
- react-native - React Native navigator,防止在 push() 后返回时卸载静态 navigationOptions 组件
- java - open api 3.0 是否可以使用 swagger 2.0 中的 ui?
- c# - 如何在不添加问号的情况下从应用配置中读取文件路径?
- java - Spark运行一段时间后无法找到自己的临时文件并给出java.io.FileNotFound Exception
- flutter - 我如何为颤振插件实现委托
- javascript - 无法弄清楚为什么我的变量没有更新
- angular - 无法使用 Angular 7 在 facebook 中共享 url
- unit-testing - Nunit 断言 AreEqual 差异,因为引号