3

データベースから返された値に従ってリストに列挙型を追加するにはどうすればよいですか。値が 1 の場合はリストに追加し、そうでない場合は追加しません。

これは私が多かれ少なかれ持っているものです:

Permissions = new List<Permission>()
{
    ((int)data[0]["AllowOverride"] == 1 ? Permission.AllowOverride : "I do not have an else")
    ((int)data[0]["AllowAttachment"] == 1 ? Permission.AllowAttachment: "I do not have an else")
},

編集: オブジェクト初期化子の一部としてこのリストを作成しています。

4

2 に答える 2

3

ここでは条件演算子は必要ありません。単にif:を使用します。

Permissions = new List<Permission>();

if(((int)data[0]["AllowOverride"]) == 1)
    Permissions.Add(Permission.AllowOverride);

if(((int)data[0]["AllowAttachment"]) == 1)
    Permissions.Add(Permission.AllowAttachment);
于 2012-08-16T08:08:34.837 に答える
1

ラムダ関数の結果に基づいてプロパティの設定を試すことができます。これにより、権限を構築するための別の関数の必要性がなくなります。次の行に沿って何かを試すことができます。

Permissions = 
    new Func<DataRow, List<Permission>>(permissionData =>
    {
        List<Permission> permissions = new List<Permission>();
        // do all your if checks here to add the necessary permissions to the list
        return permissions;
    })(data[0])

編集: いくつかの変数名を変更しただけなので、既に使用されている「データ」変数と競合することなく実際にコンパイルされます。

于 2012-08-16T08:40:53.863 に答える