C#
パターン5: Parse / TryParse + IsDefinedでDB値検証
出典: C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン — パターン5: Parse / TryParse + IsDefinedでDB値検証
using System;
public enum ProductStatus
{
Active = 1,
Suspended = 2,
Discontinued = 9
}
class Program
{
static void Main()
{
//文字列→ Enum変換(DBの文字列カラムから読み込み)
string dbStringValue = "Active";
// ✅ TryParseで安全に変換(ignoreCase: trueで大文字小文字無視)
if (Enum.TryParse<ProductStatus>(dbStringValue, ignoreCase: true, out var status))
{
Console.WriteLine($"変換成功: {status}");
}
else
{
Console.WriteLine("変換失敗");
}
//数値→ Enum変換+ IsDefinedで検証
int dbIntValue = 999; // DBに想定外の値が入ってた
if (Enum.IsDefined(typeof(ProductStatus), dbIntValue))
{
var statusFromInt = (ProductStatus)dbIntValue;
Console.WriteLine($"検証OK: {statusFromInt}");
}
else
{
Console.WriteLine($"未定義の値: {dbIntValue}");
//エラーログ/デフォルト値処理など
}
}
}
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「パターン5: Parse / TryParse + IsDefinedでDB値検証」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
7 件if (status == 1){ /* 販売中 */ } else if (status == 2){ /* 一時停止 */ } else if (status == 9){ /* 廃番 */ }未収録
if (status == 1){ /* 販売中 */ }
#e9dce50030d4
//商品ステータスのEnum public enum ProductStatus { Active = 1, //販売中
▶ 実行可
パターン1:基本宣言と数値変換
#4c6d50a09fcd
using System; using System.ComponentModel; using System.Reflection;
▶ 実行可
パターン2: Description属性で画面表示
#b083bdc7c698
//キャッシュ版 public static class EnumDescriptionCache { private static readonly Dictionary<Enum, string> _cache = new Dictionary<Enum, string>();未収録
パターン2: Description属性で画面表示
#9ca736d259fd
using System; [Flags] public enum Permission
▶ 実行可
パターン3: [Flags]属性でビット組合せ
#55cfcc401bc8
using System; using System.Linq; using System.Windows.Forms;未収録
パターン4: GetValues / GetNamesでComboBoxバインド
#d673233cfac5
![C# Enum 完全ガイド — Description 属性 / [Flags] / 数値変換の使い分け5パターン](/_next/image/?url=https%3A%2F%2Fhiropon-progra.com%2Fwp-content%2Fuploads%2F2026%2F05%2Fcsharp-enum-complete-guide.png&w=3840&q=75)