【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; }
今日の学びは以上です。