2017-04-07 10 views
0

blogpost、その親Blogオブジェクト、およびそのブログ投稿のコメントリストを返す次のメソッドを与えます。このメソッド内で、コメントのリスト内の各コメントのコメント返信のリストも返す方法があるかどうかを判断しようとしています。ここでLinq to EFリストのサブリストを含める

は、クラス

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

コメント返信の表現方法の詳細を教えてください。関係がどのようにクエリを書くことができないか見ることなく。 – 1283822

+0

クラス定義をOPに追加しました – dinotom

+0

私は個人的にListの代わりにCommentモデルでICollectionを使用し、その前にはキーワードvirtualを使用し、返信モデルのコメントコメントの前には – Edward

答えて

0

「回答」はコメントのナビゲーションプロパティがある場合は、既存のクエリにそうように含める追加することができます。これは、あなたが入れ子に含まれるように、ただ簡単に持っている含まれて同じように動作します

.Include("Comments.Replies") 

ナビゲーションプロパティ

+0

@Alex ...偉大なもの、私はあなたが文字列でそのようにインクルードを書くことができたことは知らなかった。 – dinotom

関連する問題