0

我想开发一个有多个论坛的讨论应用程序。在每个论坛中可以有许多主题。在每个线程中,可以有多个帖子。在 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- FORUMS.名称
  • No of Threads - THREADS 中的总行数Forum
  • 帖子数 - 帖子中属于的总行数Forum
  • Last Thread - THREADS.Subject 属于最近的 POSTSForum
  • Last Post Submitter - USERS.Name 最近的 POSTS 属于Forum
  • Last Post Submitted time - POSTS.SubmittedOn 属于最近的 POSTSForum

谢谢

4

1 回答 1

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
            }
于 2013-01-02T13:31:56.253 回答