1

RecentChanges私のウェブサイトで行われたすべてのアクションへの参照を保持するテーブルがあります。これには、実行されたアクションのタイプ(編集、アップロードなど)、リビジョンID外部キー(Revisionsテーブル内のIDを参照します-nullの場合があります)、およびログID外部キー(内のIDを参照します)が含まれます。Logsテーブル-nullにすることができます)。上記の最後の2つのテーブルには、アクションが発生したときのタイムスタンプが含まれています。

RecentChanges私の問題は、タイムスタンプ値が2つの別々のテーブルにあるため、テーブルの結果を降順で表示するにはどうすればよいですか?

ここでアイデアを得るには、Linqクエリのスニペットを使用します。

var list = (from r in Entity.RecentChanges
            //where clause??
            select r);
4

1 に答える 1

1

このようなもの?順序付けを支援するために、匿名タイプに投影しています(投影に必要な他のフィールドを追加する必要があります):

var query = (from c in Entity.RecentChanges
        from l in Entity.Logs
            .FirstOrDefault(log => log.ID == c.LogID).DefaultIfEmpty()
        from r in Entity.Revisions
            .FirstOrDefault(rev => rev.ID == c.RevisionID).DefaultIfEmpty()
        select new
               {
                   ActivityDate = l != null 
                       ? l.Timestamp 
                       : r != null
                           ? r.Timestamp
                           : DateTime.Now. //what if both are null? catching all eventualities here
                   //select your other fields here

               })
        .OrderByDescending(c => c.ActivityDate)
        .ToList();
于 2012-04-30T19:36:58.193 に答える