当前位置: 首页 > 编程语言 > C#

LINQ查询论坛分享

时间:2023-04-10 12:04:09 C#

LINQ查询论坛我写这个论坛是因为我是LINQ的新手,当用户点击主页时我遇到了这个问题。我想要一个显示论坛列表的表格,如下所示:Forum---Topics(count)---Posts(count)---LastPostUserId---LastPostTime我有以下SQL表:Forums:ForumId(int32),标题(字符串)、描述(字符串)),UserId(guid),Post(string),CreateDate(datetime)谢谢...如果您使用会员资格并且不想在dbml中包含aspnet_Users,则显示用户名:...LastPostUserId=posts.OrderByDescending(p=>p.PostId).Take(1).Select(p=>Membership.GetUser(p.UserId))...使发布的示例更好一点的另一个更改是在posts变量中添加orderbydescending:然后你可以从select子句Delete4repeatedOrderByDescending:fromforuminForumsletposts=ForumPosts.Where(p=>p.ForumThreads.ForumId.Equals(forum.ForumId)).OrderByDescending(p=>p.PostId)selectnew{Forum=forum.Title,Description=forum.Description,Topics=forum.ForumThreads.Count(),Posts=posts.Count(),LastPostId=posts.Take(1).Select(p=>p.PostId),拉stPostThreadId=posts.Take(1).Select(p=>p.ThreadId),LastPostUserId=posts.Take(1).Select(p=>p.UserId),LastPostTime=posts.Take(1).Select(p=>p.CreateDate)}甚至更干净:从论坛中的论坛让帖子=ForumPosts.Where(p=>p.ForumThreads.ForumId.Equals(forum.ForumId))让lastPost=posts.OrderByDescending(p=>p.PostId).Take(1)selectnew{Forum=forum.Title,Description=forum.Description,Topics=forum.ForumThreads.Count(),Posts=posts.Count(),LastPostId=lastPost.PostId,LastPostThreadId=lastPost.ThreadId,LastPostUserId=lastPost.UserId,LastPostUserName=Membership.GetUser(lastPost.UserId),LastPostTime=lastPost.CreateDate}没有最后一篇文章时测试这段代码,我认为如果Take(1)isnull错误可能会抛出来自论坛中的论坛来自db.ForumPosts.Where(p=>p.Thread.ForumId.Equals(forum.ForumId))中的帖子selectnew{Forum=forum.Title,Topics=forum.ForumThreads.Count(),Posts=posts.Count(),LastPostBy=posts.OrderByDescending(p=>p.CreateDate).FirstOrDefault(p=>p.UserId),LastPostTime=posts.Max(p=>p.CreateDate))}未经测试,但尝试开始在这里检查它执行的SQL查询,让我知道它是否需要优化。这几乎可以解决问题(尽管它会产生一些可怕的SQL;-)...)来自论坛中的论坛让帖子=ForumPosts.Where(p=>p.ForumThreads.ForumId.Equals(forum.ForumId))selectnew{=forum.Title,Description=forum.Description,Topics=forum.ForumThreads.Count(),Posts=posts.Count(),LastPostId=posts.OrderByDescending(p=>p.PostId).Take(1).Select(p=>p.PostId),LastPostThreadId=posts.OrderByDescending(p=>p.PostId).Take(1).Select(p=>p.ThreadId),LastPostUserId=posts.OrderByDescending(p=>p.PostId).Take(1).Select(p=>p.UserId),LastPostTime=posts.OrderByDescending(p=>p.PostId).Take(1).Select(p=>p.CreateDate)}最后一件事——我有从SQL表“ForumPosts”到“Aspnet_Users”的关系,我想将列Aspnet_Users.UserName显示为LastPostUserName...我该怎么做?您将如何优化整个查询?以上就是C#学习教程:LINQ查询论坛分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: