![](/img/trans.png)
[英]How to get multiple Records from Second table base on list of record from First table Using EF
[英]EF. Select records from one table based on the properties of the records from second table that have an FK from the first
我有兩張桌子。 BookTitles和BookAuthors。 BookTitle可以包含多個BookAuthor:
BookTitles:
- Book_Id
- BookName
BookAuthors:
- Author_Id
- AuthorName
- Book_Id
在第二個表中,Book_Id是外鍵。 我先使用實體框架,首先是數據庫。 這是BookTitles表的模型(自動創建):
public partial class BookTitles
{
public BookTitles()
{ this.BookAuthors = new HashSet<BookAuthors>(); }
public int Book_Id { get; set; }
public string BookName { get; set; }
public virtual ICollection<BookAuthors> BookAuthors { get; set; }
}
最后一個屬性顯示BookTitles類型的對象將包含從第二個表中檢索到的BookAuthors對象的列表。
問題:如何檢索BookTitles記錄,該記錄將包含例如具有BookAuthors.AuthorName ==“ AAA”的BookAuthors類型的對象?
我試過了,但是沒有用:
using (var db = new BooksContext())
{
var books =
db.BookTitles.Where(x => x.BookAuthors.Contains(new BookAuthors() {AuthorName = "AAA"})).ToList();
}
如何使用Lambda表達式查詢它以及如何使用LINQ to Entities進行查詢?
使用Any
代替Contains
:
var books =
db.BookTitles.Where(x => x.BookAuthors.Any(y => y.AuthorName == "AAA")).ToList();
或者如果BookAuthor
包含導航屬性BookTitles
,你應該能夠做到:
var books =
db.BookAuthors.FirstOrDefault(x => x.AuthorName == "AAA").BookTitles.ToList();
請嘗試以下操作:
using (var db = new BooksContext())
{
var books = from title in db.bookTitles
from author in title.BookAuthors
where author.AuthorName == "AAA"
select title;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.