C#/VB.NET 如何从工时表列表中提取休息时间存入独立列表
实现思路
- 无需将BindingList转换为DataTable,直接通过索引遍历原始工时BindingList即可完成提取,逻辑更简洁高效。
- 核心逻辑为取相邻的两条工时记录,按规则拼接生成休息时段,同时按日期过滤跨天的无效时段。
代码实现示例
' 初始化休息时段列表 breakView = New List(Of BreaksMA)() ' 遍历原工时BindingList,只需遍历到倒数第二条即可 For i As Integer = 0 To 你的工时BindingList实例.Count - 2 Dim currentRecord = 你的工时BindingList实例(i) Dim nextRecord = 你的工时BindingList实例(i + 1) ' 校验两条记录属于同一天,符合按日期区分的要求 If currentRecord.日期属性名 = nextRecord.日期属性名 Then Dim breakItem As New BreaksMA() With { .ID = Guid.NewGuid().ToString(), ' 也可复用你原工时记录的ID生成规则 .DateX = currentRecord.日期属性名, .From = currentRecord.对应Excel最后一列的属性名, .ToX = nextRecord.对应Excel倒数第二列的属性名 } breakView.Add(breakItem) End If Next
注意事项
- 请将代码中占位的属性名替换为你
MyClass中实际定义的对应属性名即可使用。 - 可根据业务需求增加额外校验逻辑,比如判断提取的
From时间早于ToX时间,排除无效的休息时段。 - 如果需要对同一日期的休息时段做排序,可在所有记录提取完成后对
breakView按From字段做排序处理。
内容的提问来源于stack exchange,提问作者Freeze
相关产品推荐
相关产品推荐

