2012-04-30 12 views
1

私はテーブルRecentChangesを持っています。私のウェブサイトで行われたすべての操作を参照しています。リビジョンID外部キー(Revisionsテーブル内のIDへの参照 - ヌルにすることができます)とログID外部キー(これはIDを参照します) Logsテーブル内 - nullでもかまいません)。上記の最後の2つの表には、アクションが発生したときのタイムスタンプが含まれています。他の2つのテーブルから来る句で注文する

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

は、LINQクエリの抜粋です。このような

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

答えて

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(); 
関連する問題