我有一个审计表,用于存储SQL Server中单个任务级别的长时间运行进程的审计行。
该过程包含父步骤和子步骤,每个步骤都记录到审计表中。任务可能会也可能不会拥有父级。
e.g。
auditId,TaskName,StartTime,EndTime,Status
在ObservableCollection上使用C#4.0 / LINQ到实体/ LINQ我想从过去的X天获得该表的审计摘要,其中包含每个状态的总持续时间。如果我可以弄清楚如何获取摘要审核记录,我可以透视各个记录以生成摘要。
在审核摘要中应该:
因此,使用上面的示例摘要记录将是:
auditId,TaskName,StartTime,EndTime,Status
有什么想法吗?
由于
答案 0 :(得分:0)
在确定如何做到这一点时,发现了很多关于EF和日期的“有趣”事情。
所以最后我:
public DateTime? StartDateTimeOfNext { get { if (_startDateTimeOfNext == null) { DateTime windowMin = this.StartTime.Date; DateTime windowMax = this.StartTime.Date.AddDays(1).AddMinutes(-1); DateTime? query = (from nextAuditLog in AuditLog.AuditLogEntityContext.AuditLogs where nextAuditLog.auditId > this.auditId && nextAuditLog.StartTime > this.StartTime && nextAuditLog.StartTime <= windowMax && nextAuditLog.StartTime >= windowMin orderby nextAuditLog.auditId ascending select nextAuditLog.StartTime ).DefaultIfEmpty(DateTime.Today).First(); if (query != DateTime.Today) { _startDateTimeOfNext = query; return query; } else { _startDateTimeOfNext = this.EndTime; return this.EndTime; } } else { return _startDateTimeOfNext; } } }