-1
我有一个客户成员记录集,如下所示。通过删除重叠行来缩短连续日期范围
CustomerId | EffectiveDate | EndDate | RecordNo
A1 | 01 - 01 - 2016 | 31 - 05 - 2016 | 1
A1 | 01 - 06 - 2016 | 31 - 10 - 2016 | 2
A1 | 01 - 09 - 2016 | 31 - 12 - 2017 | 3
A1 | 02 - 11 - 2016 | 31 - 12 - 2016 | 4
A2 | 02 - 11 - 2016 | 31 - 12 - 2016 | 5
要求是连续
- 日期需要被组合成1个时间范围
- 如果有,该行应该被删除的日期为给定的客户ID的重叠
因此,我的结果集应该看起来像这样
CustomerId | EffectiveDate | EndDate | IsBad
A1 | 01 - 01 - 2016 | 31 - 10 - 2016 | false
A1 | 01 - 09 - 2016 | 31 - 12 - 2017 | true
A1 | 02 - 11 - 2016 | 31 - 12 - 2016 | false
A2 | 02 - 11 - 2016 | 31 - 12 - 2016 | false
即对于客户A1,1重叠行被设置为拒绝(IsBad属性设置为true)。 彼此相邻的2行组合成1个日期范围。 但记录号4被保留作为 - 是因为它们是为期一天的间隙(它不是连续的)
的数据被存储在一个List<CustomerMembership>()
其中CustomerMembership
类有CustomerId
,EffectiveDate
,EndDate
和IsBad
性质。
编辑 - 问题是如何获得所需的输出(第二组数据)给定输入(第一组数据)?
由于提前
[请不要将标记置于问题标题](https://stackoverflow.com/help/tagging) – Liam
这是什么问题? – Liam
请尝试以下方法:var join = from dtdate AsAumerable() 将effdate.Field上的dt.AsEnumerable()中的enddate连接到(“EndDate”).AddDays(1)等于enddate.Field (“EffectiveDate”) 选择新的{effdate = effdate,enddate = enddate}; –
jdweng