3 つのテーブルを結合した結果を返す Linq を作成しようとしています。
「Book」、「Author」エンティティがあります。1 冊の本に多くの著者がいて、1 人の著者が多くの本を書くことができる
本の名前とその本を書いた著者のリストを持つ「BooksAuthors」オブジェクトを取得したいと考えています。私の現在のlinqは(しかし、何も返さない、NullPointer例外が発生する)
BooksAuthors = db.tblBooks.SelectMany(
book => book.Authors,
(book, author) => new Books
{
BookID = book.BookID,
BookName = book.BookName,
Authors = book.Authors
}),
その他のクラス:
public class Author
{
public virtual int AuthorID { get; set; }
public virtual string AuthorName { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
public class Book
{
public virtual int BookID { get; set; }
public virtual string BookName { get; set; }
public virtual ICollection<Author> Authors { get; set; }
}
public class Books
{
public int BookID { get; set; }
public string BookName { get; set; }
public IEnumerable<Author> Authors { get; set; }
}
public class LibraryDb : DbContext
{
public DbSet<Book> tblBooks { get; set; }
}