我想做的基本上是这个问题提供的内容:SQL Server - 如何根据两个表中的日期显示最近的记录..唯一的区别是:我使用的是 Linq to sql。
我必须表:
- 作业
- 论坛帖子
这些不是很相似,但它们都有一个“LastUpdated”字段。我想获取最近加入的记录。但是,我还需要用于分页的获取/跳过功能(不,我没有 SQL 2012)。
我不想用我的所有记录创建一个新列表(带有 ToList 和 AddRange),所以我知道整个记录集,然后订购.. 这似乎非常低效。
我的尝试:
请不要嘲笑我效率低下的代码.. 好吧,一点点(既是因为它效率低又......当 skip 大于 0 时它不会做我想要的)。
public List<TempContentPlaceholder> LatestReplies(int take, int skip)
{
using (GKDBDataContext db = new GKDBDataContext())
{
var forumPosts = db.dbForumPosts.OrderBy(c => c.LastUpdated).Skip(skip).Take(take).ToList();
var assignMents = db.dbUploadedAssignments.OrderBy(c => c.LastUpdated).Skip(skip).Take(take).ToList();
List<TempContentPlaceholder> fps =
forumPosts.Select(
c =>
new TempContentPlaceholder()
{
Id = c.PostId,
LastUpdated = c.LastUpdated,
Type = ContentShowingType.ForumPost
}).ToList();
List<TempContentPlaceholder> asm =
assignMents.Select(
c =>
new TempContentPlaceholder()
{
Id = c.UploadAssignmentId,
LastUpdated = c.LastUpdated,
Type = ContentShowingType.ForumPost
}).ToList();
fps.AddRange(asm);
return fps.OrderBy(c=>c.LastUpdated).ToList();
}
}
任何很棒的 Linq to SQl 人,谁能给我一个提示?我相信有人可以加入他们的出路!