C# DataTable を Distinct して重複を除外する
DataTable の中身の重複を除外する方法です。
このような重複データを、ラムダ式で Distinct します。
var ret = dt.AsEnumerable().Select(row => new { ShishaName = row.Field<string>("ShishaName"), BushoName = row.Field<string>("BushoName"), }).Distinct();
重複が除外されました。
列が大量にある場合は、列名をいちいち定義しているので少々つらいかもしれません。
foreach (var item in ret) { var shisha = item.ShishaName; }
ただ、列名に名前を付けているので、その後の扱いは便利です。
名前で参照することができます。
以上の方法で DataTable から重複データを削除することができます。
しかし、もしこの DataTable が DB から取得しているデータだとしたら、データの取得方法がおかしいか、データベース設計がおかしいか、疑いを持つべきです。
データを取得する時点で、重複しないようにするのがあるべき姿です。
なぜなら、無駄なデータを取得するだけでコストがかかるからです。
すぐにプログラム側でなんとかするというアプローチに走るのは、よい実装とは言えません。