LINQ查询检索关联数据的多个级别

问题描述:

我只是想用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; 

} 

博客有很多文章。帖子有很多评论。 我将如何编写一个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

你可以只使用两个从语句:

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