プロが教えるわが家の防犯対策術!

こんにちは。
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

どなたか分かる方、よろしくお願いいたします。

A 回答 (1件)

一時テーブルと コレクションクラスを使ってみましょう



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

といった具合で ・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています