来自其他两个表的条​​款排序

时间:2012-04-30 19:16:35

标签: c# .net linq

我有一张表RecentChanges,其中包含对我网站上所有操作的引用。它包含完成的操作类型(例如编辑,上传等),修订版ID外键(引用Revisions表中的ID - 可以为null)和日志ID外键(其中)对Logs表中的ID的引用可以为null。提到的最后两个表都包含动作发生时间的时间戳。

我的问题是如何命令RecentChanges表中的结果按降序显示,因为时间戳值在两个单独的表中?

这里有一个想法是Linq查询的片段:

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

1 个答案:

答案 0 :(得分: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();