2009-08-14 27 views
4

我只是想用asp.net mvc來加快速度,我想知道如何從關係數據指定的實體獲取關係數據超過一個級別條款。以下面的域模型爲例:LINQ查詢檢索關聯數據的多個級別

博客有很多帖子。帖子有很多評論。

我該如何編寫一個LINQ查詢來將實體返回到Blog.Posts.Comments級別?

我想出的唯一(不那麼高雅)解決方案是使用LINQ查詢獲取博客和帖子,然後獲取評論的foreach。

var blog = (from b in _db.BlogSet.Include("Posts") 
      select b); 

foreach (Post p in blog.Posts) 
{ 
    var comments = (from c in _db.CommentSet 
        where c.PostId = p.Id 
        select c); 

    p.Comments = comments; 

} 

回答

6

博客有很多文章。帖子有很多評論。 我將如何編寫一個LINQ查詢以將實體返回到Blog.Posts.Comments級別?

我相信,你可以做到以下幾點來實現這一點:

var blog = (from b in _db.BlogSet.Include("Posts.Comments") 
      select b); 

在這種情況下,每個博客,帖子和他們的意見將是牽強。

馬克

+0

這工作完美,並保持代碼漂亮和乾淨 – 2009-08-14 06:26:58

+1

如果我可以投這更多,我會!它適用於我4級:o) – 2013-08-16 12:22:25

5

你可以只使用兩個從語句:

var comments=from post in blog 
      from comment in blog.comments 
      where comment.PostId==post.Id 
      select comment; 
+0

這是很好的瞭解。當需要包含多個嵌套實體時,它會派上用場。謝謝! – 2009-08-14 07:26:00