2012-08-16 58 views
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") 
}, 

编辑:我建造这个列表作为对象初始化的一部分。

回答

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]) 

编辑:我只是改变了一些变量的名称,以便它实际上没有使用已经与你的“数据”变量冲突的编译。

+0

中显示的方法谢谢,这个答案是正确的! :-) – Landi 2012-08-16 08:44:28

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); 
+0

它不会工作,因为我构建权限列表作为对象初始值设定项的一部分。 – Landi 2012-08-16 08:23:59

+0

然后不要这样做。或者将我的代码抽取到一个方法中并像下面这样初始化权限列表:'Permissions = Method(data),' – 2012-08-16 08:24:30

+0

我必须这样做,因为它是我正在开发的框架的一部分。 permissions属性是我构建的大对象上大约30个奇特属性的一部分。 – Landi 2012-08-16 08:26:24

相关问题