こんにちは。
DataTableで重複した行を削除するプログラムが作れず悩んでいます。
もしよろしければ、教えてもらえないでしょうか?
例えば下記のようなDataTableのとき。
ID CD
-------------
5 A1
6 A2
8 A3
9 A4
10 A5
5 A6
10 A7
NULL A8
NULL A9
NULL A10
-------------
下記のようにしたいと思っています。
ID CD
-------------
5 A1
6 A2
8 A3
9 A4
10 A5
NULL A8
-------------
重複しているレコードは最初にヒットしたものを残します。
そこで下記のようなプログラムを書いてみたのですが、駄目でした。
' 重複行を削除する
For i = 0 To DataTable.Rows.Count - 1
Index = temp.IndexOf(DataTable.Rows(i).Item("id"))
If Index = -1 Then
temp.Add(DataTable.Rows(i).Item("id"))
Else
dr = DataTable.Rows(i)
DataTable.Rows.Remove(dr)
If i = DataTable.Rows.Count - 1 Then
Exit For
End If
i = i - 1
End If
Next
どなたか分かる方、よろしくお願いいたします。
一時テーブルと コレクションクラスを使ってみましょう
dim tmp as new DataTAble
dim col as new Collection
tmp.Columns.add("id")
tmp.Columns.add("CD")
for each r in DataTable.rows
if col.Contains( r("id").ToString)= false then
dim nr as DataRow = tmp.NewRow
nr(0) = r(0)
nr(1) = r(1)
tmp.rows.add( nr )
col.add( r(0).ToString,r(0).ToString)
end if
next
DataTable = tmp
DataGridView1.DataSource = DataTable
といった具合で ・・・