2012-04-30 4 views
1

У меня есть таблица RecentChanges, в которой содержится ссылка на все действия, выполненные на моем веб-сайте. Он содержит тип выполненного действия (например, редактирование, загрузка и т. Д.), Внешний ключ идентификатора ревизии (который ссылается на идентификатор в таблице Revisions - может быть нулевым) и внешний ключ журнала ID (который ссылается на идентификатор в таблице Logs - может быть нулевой). Обе упомянутые последние две таблицы содержат временную метку, когда произошло действие.Порядок предложений по двум другим таблицам

Моя проблема заключается в том, как я могу упорядочить результаты из таблицы 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(); 
Смежные вопросы