GroupJoin和Include

时间:2013-03-16 09:53:37

标签: c# linq linq-to-sql include grouping

GroupJoin之后我想要包含Book.Authors,因为字段Book.Authors将为null。 但我不能。我该怎么做才能解决这个问题?

Queryable<NewRead> recent = Repository.NewReads.Where(x => x.UserId == usersId);

var newFavs = IsAuthorized ? Repository.NewFavs.Where(x => x.UserId == UserId) : Repository.NewFavs.Where(x => false);

var recentFavorite = recent.GroupJoin(newFavs,
                             x => x.BookId,
                             y => y.BookId,
                             (x, y) => new {Recent = x, Favorite = y, x.Book});

我试过了:

var recent = Repository.NewReads.Include("Book.Authors")
                   .Where(x => x.UserId == usersId);

var newFavs = IsAuthorized ? Repository.NewFavs.Include("Book.Authors").Where(x => x.UserId == UserId) : Repository.NewFavs.Where(x => false);

和所有这些在一起。 它在GroupJoin之前有效,但在Authors领域失败之后。 如果我添加:

var recentFavorite = recent.GroupJoin(newFavs,
                             x => x.BookId,
                             y => y.BookId,
                             (x, y) => new {Recent = x, Favorite = y, x.Book, x.Book.Authors});

一切正常,但不是解决方案。

2 个答案:

答案 0 :(得分:0)

你可以做到

var recent = Repository.NewReads.Include(x => x.Book.Authors)
                       .Where(x => x.UserId == usersId);

答案 1 :(得分:0)

var recent = Repository.NewReads.Include("Book").Where(n => n.UserId == usersId).FirstOrDefault().Book.Select(b=>b.Authors);