今日の学び

アウトプットって大切なんだって

【C#】EnumでLinqを使う

シチュエーション

Enumでサポートしているメディアタイプを列挙してパラメータで渡ってきたファイル名がサポート対象か判定したい。

Linqを使わないで書く

public Enum SupportedMediaType
{
    // 弊社の共通モジュールロジックです。ToAliasStringメソッドでEnumAliasの値を取得します。
    [EnumAlias(".gif")]
    Gif,

    [EnumAlias(".jpeg")]
    Jpeg,

    [EnumAlias(".png")]
    Png,

    ... // 合計10個くらい
}

public static bool IsSupportedMediaType(string fileName)
{
    // ToLowerメソッドは弊社の共通モジュールロジックです。文字列を小文字に変換します。
    string fileExtension = Path.GetExtension(fileName).ToLower();
    foreach(SupportedMediaType mediaType in Enum.GetValues(typeof(SupportedMediaType)))
    {
        if(mediaType.ToAliasString() == fileExtension) return true
    }

    return false;
}

Linqを使って書く

IEnumerable OfType (this IEnumerable source)とは

IEnumerableの要素をTResult型のみにフィルター処理するメソッド。

public static bool IsSupportedMediaType(string fileName)
{
    return Enum.GetValues(typeof(SupportedMediaType)).OfType<SupportedMediaType>().Any(x => x.ToAliasString() == Path.GetExtension(fileName).ToLower()) ? true : false;
}

今日の学びは以上です。