データテーブルの中から重複した行が何行目かを探す方法

こんにちは

データテーブルの中から重複した行が何行目にあるかを探す方法を考えているのですが、中々良い方法が思いつかず、ご教示願います。

やりたいことのイメージ
<元のデータテーブル>
東京,101,1000
大阪,102,500
東京,105,1000
東京,101,1000
大阪,102,500
東京,101,1000
<アウトプットイメージ>
{{1,4,6}{2,5}}
※1行目と4行目と6行目が重複、2行目と5行目が重複のため。

このようにデータテーブル内の各行で、行に含まれる全データが一致するデータの情報を得たいです。

どなたかご教示ください。
よろしくお願いします。

こんにちは

ヘッダが無いと扱いにくいので、仮に下記のヘッダをつけて

City,ID,Value
東京,101,1000
大阪,102,500
東京,105,1000
東京,101,1000
大阪,102,500
東京,101,1000

以下の式で抽出できます。

dict = dt.AsEnumerable.GroupBy(Function(r) Tuple.Create(r("City").ToString,r("ID").ToString,r("Value").ToString)).Where(Function(g) g.Count>1).ToDictionary(Function(g) g.Key.item1+"_"+g.Key.item2+"_"+g.Key.item3   ,Function(g) g.Select(Function(r) dt.Rows.IndexOf(r)).ToArray)

注:dictはDictionary<String,Int32[]>

結果は以下の通り(0ベースのインデックスです)

1 Like

ありがとうございます。
行の中身も取得できやりたいことが実現できとても勉強にもなりました!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.