我想开发一个讨论应用程序,其中有许多论坛。在每个论坛可以有许多线程。在每个线程中,可以有许多帖子。在SQL中,我有以下四个表:
FORUMS
- Id - int identity
- Name - nvarchar//论坛名称
THREADS
- Id - int identity
- ForumId -输入论坛的外键。Id
- 主题- nvarchar
POSTS
- Id - int identity
- threaddid - int线程的外键。Id
- 提交者-用户的外键。Id
- SubmitterOn - datetime
- 内容- nvarchar
USERS
- Id - int identity
- 名称- nvarchar
返回数据库中所有论坛的以下列的列表(列表中的一行对应FORUMS
中的一行)的最佳方法是什么:
- No of Threads -
Forum
的线程总数 - No of Posts -属于
Forum
的Posts的总行数 - 最后一个线程-线程。属于
Forum
的最新post的主题 - 最后一个帖子提交者- USERS。最近属于
Forum
的post的名称 - 最后一篇文章提交时间- POSTS。属于
Forum
的最新帖子的提交
Forum
-论坛。谢谢
类似于
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
}