Linq 获取三个层次的数据
我想开发一个讨论应用程序,其中有许多论坛。在每个论坛中可以有许多线程。在每个线程中,可以有许多帖子。在SQL中,我有以下四个表:Linq 获取三个层次的数据,linq,linq-to-sql,Linq,Linq To Sql,我想开发一个讨论应用程序,其中有许多论坛。在每个论坛中可以有许多线程。在每个线程中,可以有许多帖子。在SQL中,我有以下四个表: 论坛 Id-int标识 Name-nvarchar//论坛名称 线程 Id-int标识 ForumId-FORUMS.Id的int外键 主题-女主角 POSTS Id-int标识 ThreadId-指向THREADS.Id的int外键 Submitter-用户的int外键。Id 按时提交 内容-nvarchar 用户 Id-int标识 名称-nvarch
论坛
- Id-int标识
- Name-nvarchar//论坛名称
线程
- Id-int标识
- ForumId-FORUMS.Id的int外键
- 主题-女主角
POSTS
- Id-int标识
- ThreadId-指向THREADS.Id的int外键
- Submitter-用户的int外键。Id
- 按时提交
- 内容-nvarchar
用户
- Id-int标识
- 名称-nvarchar
论坛中的一行)的最佳方式是什么:
论坛
-论坛名称
- 线程数-
论坛中线程的总行数
- 帖子数量-属于
论坛的帖子总行数
- 最后一个线程-线程。属于
论坛的最新帖子主题
- 最后一个帖子提交者-用户。属于
论坛的最近帖子的名称
- 上次帖子提交时间-POSTS.Submitted属于
论坛的最新帖子
谢谢类似于:
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
}
谢谢工作非常漂亮,只需稍加调整。对我来说也是最有教育意义的。不客气。此链接可能有助于您进一步了解:。我没有适当的Linq教育的好处。我花了几天的时间在这个问题上尝试了各种各样的修正。运行SQL事件探查器,大多数事件都被分解为许多单独的SQL调用。我的问题是,我可以让一个部分工作,但我不能让整个事情在一起。