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

您可以尝试根据 lambda 函数的结果设置属性,这样就不需要单独的函数来构造权限。您可以尝试以下方式:

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 回答