0

我有一个包含重复项的 .CSV。当我填写我的数据表时,我想过滤掉重复项并添加某些单元格。

我的专栏:

  With table.Columns
            .Add(currentRow(0).ToString) '0
            .Add(currentRow(3).ToString) '3
            .Add(currentRow(5).ToString) '5
            .Add(currentRow(6).ToString) '6
            .Add(currentRow(8).ToString) '8
        End With

我的标题:

table.Rows.Add(table.Columns(0).ToString, table.Columns(1).ToString, table.Columns(2).ToString, table.Columns(3).ToString, table.Columns(4).ToString)

当我继续检查 currentRows 到我桌子上已有的内容时,我收到一条错误消息“位置 # 没有行”

只有当我有这段代码定义我的标题但格式不正确时,它才会起作用。

 With table.Rows
                .Add(currentRow(0).ToString) '0
                .Add(currentRow(3).ToString) '3
                .Add(currentRow(5).ToString) '5
                .Add(currentRow(6).ToString) '6
                .Add(currentRow(8).ToString) '8
            End With

这是我的 If 语句,我将 currentRow 的元素与第一列和第一行进行比较。

 If currentRow(0).ToString Is table.Rows(someVal).Item(0) Then

在测试中,我可以看到格式正确的标题,但我的 If 语句无法识别它。

4

1 回答 1

0

Is关键字确定两个对象引用是否引用同一个对象,但不比较对象的值。=改为使用

If currentRow(0).ToString = table.Rows(someVal).Item(0) Then 

DataTable 是过滤重复项的正确对象吗?考虑创建一个以适当方式表示您的数据的类。如果您Equals在类中重写该方法,那么使用 LINQ 可以轻松地获取不同的对象。

Dim list = New List(Of MyClass)

' Add objects
list.Add(New MyClass(...))
list.Add(New MyClass(...))
...

'Get unique objects
Dim unique = list.Distinct()
For Each obj As MyClass In unique
    ' process obj
Next
于 2012-08-30T19:38:30.903 回答