Linq到EF包括列表的子列表

时间:2017-04-07 23:57:17

标签: c# entity-framework linq

给出以下方法返回博客帖子,其父博客对象和该博客文章的评论列表;我试图确定在这种方法中是否还有一种方法可以返回评论列表中每条评论的评论回复列表。

以下是课程

public class Comment
{
    [Key]
    public int CommentId { get; set; }

    //[ForeignKey("BlogPost")]
    //[Index("IX_BlogPostIndex", 1, IsClustered = false, IsUnique = false)]
    public int BlogPostId { get; set; }

    public BlogPost BlogPost { get; set; }

    [Required]
    public string CommentText { get; set; }
    [Required]
    public DateTime CommentPostTime { get; set; }

    public List<Reply> CommentReplies { get; set; }


    [Required]    
    public string UserFullName { get; set; }
}

 public class Reply
{
    [Key]
    public int ReplyId { get; set; }

    [Required]
    public string ReplyText { get; set; }

    [Required]
    public UserProfile MemberProfile { get; set; }

    [ForeignKey("Comment")]
    [Index("IX_CommentIndex", 1, IsClustered = false, IsUnique = false)]
    public int CommentId { get; set; }

    public Comment Comment { get; set; }
   [Required]
    public DateTime ReplyPostTime { get; set; }


}

方法

public BlogPost GetBlogPostById(int blogPostId)
{
    return _db.BlogPosts.Where(e => e.BlogPostId == blogPostId)
                        .Include(e => e.Comments)
                        .Include(e => e.Blog)
                        .FirstOrDefault();
}

我可以从这个方法迭代返回对象并检索回复但是我确定必须有一种方法,使用LINQ,在这个方法中做到这一点,所以它们是返回对象的一部分,而不是运行另一个方法来做如此。

1 个答案:

答案 0 :(得分:0)

如果&#34;回复&#34;是评论的导航属性,您可以使用现有查询添加如此包含:

.Include("Comments.Replies")

这与您拥有的包含方式相同,只是更容易包含嵌套导航属性