私がやりたいことは、基本的にこの質問が提供するものです: SQL Server - 2 つのテーブルの日付に基づいて最新のレコードを表示する方法..唯一の違いは、Linq to sql を使用していることです。
私はテーブルにいる必要があります:
- 課題
- フォーラム投稿
これらはあまり似ていませんが、どちらにも「LastUpdated」フィールドがあります。結合された最新のレコードを取得したい。ただし、ページング用のテイク/スキップ機能も必要です (いいえ、SQL 2012 はありません)。
すべてのレコードを使用して (ToList と AddRange を使用して) 新しいリストを作成したくないので、レコードのセット全体を把握してから並べ替えます。これは非常に効率が悪いようです。
私の試み:
私の非効率的なコードを笑わないでください.. わかりました、少し (非効率的で... スキップが 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 から SQl への素晴らしい人々で、ヒントを教えてくれる人はいますか? 私は誰かがこれから抜け出すことができると確信しています!