C#

【C#】Listの中の重複要素をカンタンに削除する方法

C#のプログラムでListを使う際に、Listの中の重複している要素を削除したいということ無いでしょうか?私はけっこうそんな場面があるので、カンタンなやり方を紹介します。

LINQのDistinctメソッドを使う

LINQメソッドの中にDistinctというのがあります。

これは、マイクロソフトのホームページによると「既定の等値比較子を使用して値を比較することにより、シーケンスから一意の要素を返す」メソッドらしいです。シーケンスとはEnumberable型のデータ(Listや配列等)ですね。

使い方はこんな感じです。↓

ListのメソッドでDistinctを呼んであげれば重複を除外したデータを返してくれるのでとてもカンタンです。Listだけではなく、配列等の場合でも同様に使えます。

.NET Framework 3.5以上の環境からでしか使えないので.NETのバージョンを確認して使ってください。

可能ならそもそも重複データを追加させない方が良い

Distinctメソッドでカンタンに重複除外はできますが、Listの要素数が多く重複データも多いと処理時間もかかります。

なので、できるならそもそも重複状態にならない(重複データを使いしない)ようにした方が良いでしょう。

カンタンですがやり方を紹介しておきます。↓

Listで要素を追加する際にContainsメソッドを使い要素が含まれているかのチェックをした後、要素追加しています。

これなら重複状態にならないので可能ならこちらの方が良いでしょう。