使用逻辑OR将List转换为Int

时间:2013-04-08 19:34:36

标签: c# asp.net

在C#中,我有一个函数,它将一个int作为参数:

searchValue = (int)(svcMembership.Request.Active | svcMembership.Request.Inactive);

userClient.DelegateAccounts_Retrieve(searchValue);

我有一个CheckBoxList为这个列表提供选项,我已经从List<svcMembership.Request>svcMembership.Request是一个枚举)中捕获了选定的项目。

有没有办法将该List转换为具有逻辑OR的整数,如第一个例子所示?

2 个答案:

答案 0 :(得分:1)

using System.Linq;

int searchValue = mySelectedEnumValues.Cast<int>().Aggregate(0, (a, b) => a | b);

确保svcMembership.Request的值为2的幂。

另外,请查看Flags属性。

答案 1 :(得分:0)

您是否考虑过迭代checkbox_list.Items,添加Selected并每次迭代乘以2?

int checkbox_list_bits = 0;
for (int x = 0; x < checkbox_list.Items.Count; x++) {
    checkbox_list_bits *= 2;
    if (checkbox_list.Items[x].Selected) { checkbox_list_bits++; }
}