我在Books和Authors数据集之间有一对多的关系。如何使用LINQ选择书籍的第二作者(如果只有一位作者,则为null)。我不想做一个“离开加入”#39;因为我只想和作家一起归还书籍。有些书没有作者。
var books = from b in db.Books
join a in db.Authors on b.Id equals a.BookId
select new {
Book = b,
SecondAuthor = a ???
}
答案 0 :(得分:4)
所以第一件事是你应该使用组连接,而不是常规连接,这样你就可以将所有作者都作为一个集合,而不是将它们展平为每个匹配对的单独行。从该系列中,您可以获得第二项:
var books = from b in db.Books
join a in db.Authors on b.Id equals a.BookId
into authors
select new {
Book = b,
SecondAuthor = authors.Skip(1).FirstOrDefault(),
};