【发布时间】:2010-09-10 09:20:35
【问题描述】:
我有一个审计表,它存储 SQL Server 中单个任务级别的长时间运行进程的审计行。
- auditId int,
- 任务名称 nvarchar(255),
- StartTime 日期时间,
- 结束时间(日期时间,空),
- 状态(nvarchar(255),空)
流程包含父步骤和子步骤,每个步骤都记录到审计表中。任务可能有也可能没有有父级。
例如
auditId、TaskName、StartTime、EndTime、状态
- Parent1, 09:30:00, 09:40:00, 有效
- Child1, 09:30:01, 09:35:00, 有效
- Child2, 09:35:01, 09:40:00, 有效
- Parent2,09:40:01,null,null
- Child3, 09:40:02, null, null
在 ObservableCollection 上使用 C# 4.0 / LINQ to Entities / LINQ 我想从此表中获取过去 X 天的审核摘要,其中包含按状态分类的每一天的总持续时间。如果我能弄清楚如何获取摘要审计记录,我可以将单个记录转为生成摘要。
在审核摘要中应:
- 不得有任何重叠的审计记录,否则将重复计算持续时间。
- 需要处理可能有任务在当前日期仍在运行并返回 null 的事实
- 需要处理上一个任务结束和下一个任务开始之间的延迟。可能是通过获取当前任务开始和下一个任务开始之间的持续时间,而不是当前任务结束之间的持续时间。
- 如果我使用第 3 点中所述的下一条记录的开始时间,则为当天的最后一项任务处理空值,该任务将没有以下开始时间
因此,使用上面的示例,摘要记录将是:
auditId、TaskName、StartTime、EndTime、状态
- Parent1,09:30:00,09:40:01,有效
- Parent2,09:40:01,null,null
有什么想法吗?
谢谢
【问题讨论】:
标签: linq linq-to-entities c#-4.0 linq-to-objects