コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】配列やリストから重複している要素を抽出する拡張メソッド

ソースコード

public static class IListExtensions
{
    /// <summary>
    /// 重複している要素を抽出して返します
    /// </summary>
    public static T[] GetDistinct<T>( this IList<T> self )
    {
        var uniqueList  = new List<T>();
        var result      = new List<T>();

        foreach ( var n in self )
        {
            if ( uniqueList.Contains( n ) )
            {
                result.Add( n );
            }
            else
            {
                uniqueList.Add( n );
            }
        }

        return result.ToArray();
    }
}

使い方

var list = new [] { 1, 2, 2, 3, 4, 4, 5 };
var result = list.GetDistinct();
foreach ( var n in result )
{
    Debug.Log( n );
}

結果

2
4

関連記事