在连接LINQ语句中选择第二行

时间:2014-09-12 18:22:09

标签: c# linq

我在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 ??? 
            }

1 个答案:

答案 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(),
            };