通过数据表循环并保存结果在不同的数据表中

时间:2018-01-26 18:41:14

标签: asp.net vb.net

如何循环数据表并将结果保存在不同的数据表中

我正在使用vb asp.net

下面我有2个数据表和结果

Dim NewDtatTable1 As DataTable = getResults()
Dim NewDtatTable2 As DataTable = NewDtatTable1 

NewDtatTable1结果:

|------------|--------|--------|
| myLocation | myName | date   |
|------------|--------|--------|
| New york   | name1  | 1/1/12 |
| Boston     | name2  | 1/1/13 |
| New york   | name3  | 1/1/14 |
| New york   | name4  | 1/1/15 |
| Boston     | name5  | 1/1/16 |
|------------|--------|--------|

我想通过数据表名称NewDtatTable1循环,如果myLocation等于' new york'比我想将该行添加到新数据表NewDtatTable2

For Each row As DataRow In NewDtatTable21.Rows
        If (String.Compare(row.Item("myLocation").ToUpper(), "NEW YORK", True) = 0) 
        Dim R As DataRow = NewDtatTable21.NewRow
        NewDtatTable.Rows.Add(NewDtatTable1 .Rows.Item(row))
    End If
End If

我希望NewDtatTable2的结果如下:

|------------|--------|--------|
| myLocation | myName | date   |
|------------|--------|--------|
| New york   | name1  | 1/1/12 |
| New york   | name3  | 1/1/14 |
| New york   | name4  | 1/1/15 |
|------------|--------|--------|

1 个答案:

答案 0 :(得分:1)

您正在设置NewDtatTable2 = NewDtatTable1而不是克隆表的结构。所以你可以做这样的事情来复制行值而不是复制行引用。

Dim NewDtatTable1 As DataTable = getResults()
Dim NewDtatTable2 As DataTable = NewDtatTable1.Clone()

For Each row As DataRow In NewDtatTable1.Rows
    If (String.Equals(row.Item("myLocation"), "New York", StringComparison.CurrentCultureIgnoreCase)) 
        NewDtatTable2.Rows.Add(row.ItemArray)
    End If
End For