【C#】配列やリストの重複した要素を削除する

C#, DEVELOP

リスト内の重複した要素を削除するには System.Linq の Distinct を使うと楽です。

例1:単純な値の要素を削除する

using System.Linq;
var data  = new int[] { 0, 1, 2, 2, 3 };
var result = dataA.Distinct().ToArray();
// 結果
result: {0, 1, 2, 3} 

例2:クラスの要素を削除する

クラスに要素を削除するための比較関数を実装します。GetHashCode() をオーバーライドします。

using System;
public class WeaponData : IEquatable<WeaponData>
{
    private int id;
 
    #region Distinct用
    public override int GetHashCode()
    {
        return id.GetHashCode();
    }
 
    bool IEquatable<WeaponData>.Equals(WeaponData _weaponData)
    {
        if (_weaponData == null)
        {
            return false;
        }
        return (roadId == _weaponData.id);
    }
    #endregion
}

あとは単純な値の配列と同じ様に Distinct を呼ぶだけで良いです。

スポンサーリンク

Posted by kazupon