【问题标题】:Getting data of three levels of hierarchy获取三级层次的数据
【发布时间】:2013-01-02 12:58:06
【问题描述】:

我想开发一个有多个论坛的讨论应用程序。在每个论坛中可以有许多主题。在每个线程中,可以有多个帖子。在 SQL 中,我有以下四个表:

FORUMS

  • Id - int 身份
  • Name - nvarchar //论坛名称

THREADS

  • Id - int 身份
  • ForumId - FORUMS.Id 的 int 外键
  • 主题 - nvarchar

POSTS

  • Id - int 身份
  • ThreadId - THREADS.Id 的 int 外键
  • 提交者 - USERS.Id 的 int 外键
  • SubmitterOn - 日期时间
  • 内容 - nvarchar

USERS

  • Id - int 身份
  • 名称 - nvarchar

返回包含数据库中所有论坛以下列的列表的最佳方法是什么(列表中的一行对应FORUMS中的一行):

  • Forum - 论坛名称
  • 线程数 - Forum 中线程的总行数
  • No of Posts - POSTS 中属于Forum 的总行数
  • Last Thread - THREADS.Subject 属于Forum 的最新帖子
  • Last Post Submitter - USERS.Name 属于 Forum 的最近 POSTS
  • 上次提交的帖子时间 - 属于 Forum 的最近 POSTS 的 POSTS.SubmittedOn

谢谢

【问题讨论】:

  • 我没有在 Linq 上接受适当教育的好处。我花了几天时间在这个问题上尝试各种排列。运行 SQL 探查器,它们中的大多数都爆炸成许多单独的 SQL 调用。我的问题是我可以让单个部分工作,但我无法将整个事情组合在一起。

标签: linq linq-to-sql


【解决方案1】:

类似:

var query = from f in context.Forums
            select new
            {
                Name = f.Name,
                Threads = f.Threads.Count(),
                Posts = f.Threads.Sum(t => t.Posts.Count()),
                LastThread = f.Threads.OrderByDescending(t => t.Id).First().Subject,
                LastPostSubmitter = f.Threads.SelectMany(t => t.Posts).OrderByDescending(p => p.SubmitterOn).First().Name,
                LastPostSubmitterTime = f.Threads.SelectMany(t => t.Posts).OrderByDescending(p => p.SubmitterOn).First().SubmitterOn
            }

【讨论】:

猜你喜欢
  • 2012-12-17
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多