如何将数据集中的某些数据行与多个唯一值vb合并

时间:2012-11-08 11:27:26

标签: vb.net select time merge dataset

标题可能难以理解,所以这里有一个简短的解释: 我必须创建一个方法:

MergeDataset(byval ds as Dataset)作为数据集

  • 数据表有多行
  • 列:startDate,endDate和其他多个

数据集按startDate

排序

我现在做的事情:

  • 我创建了数据集的克隆,这是一个空的课程
  • 我循环遍历数据表中的每个数据行

    如果数据行在克隆数据集中的值等于所有列(startdate和endate除外) 并且克隆的结束日期等于数据行的开始日期 - 1天

其他该行已添加到克隆

现在这已经正确完成,但需要花费很多时间。 当我有一个100 000行的数据集时,需要多个小时才能将它们全部合并。

这里有一些代码:

Dim mergeSet As DataSet = dsSubscriptions.Clone()
Dim dr() As DataRow = ds.Tables("resultTable").Select("","startDate")
For Each sourceRow As DataRow In dr

If mergeSet.Tables("resultTable").Rows.Count > 0 Then
     Dim foundRows As DataRow() = mergeSet.Tables("resultTable").Select(endDate=startDate-1 and value1 = value1 and value2 = value2 and value3 = value3)    
'If nothing in foundRows -> Add row
For Each resultrow As DataRow In foundRows
resultrow("endDate") = CDate(sourceRow("endDate"))
next
else
'Add row
Next

如果我检查时间跨度,那么很多时间会在mergeSet的选择中丢失。 select具有5个唯一值,如果所有值彼此相等,则可以合并行,并且日期可以合并为一个句点。

小例子:

id startDate endDate value1 value2 value3

1 1-11-2012 30-11-2012 A B C加入合并

2 1-12-2012 31-12-2012 A B C合并1

3 1-1-2013 31-1-2013 A B B添加到合并(与2的值不同)

欢迎任何帮助! 亲切的问候

0 个答案:

没有答案