0

在 C# 中,我有一个函数,它以 int 为参数,如下所示:

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

userClient.DelegateAccounts_Retrieve(searchValue);

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

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

4

2 回答 2

1
using System.Linq;

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

确保它svcMembership.Request的值是 2 的幂。

另外,查看Flags属性。

于 2013-04-08T19:39:24.813 回答
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++; }
}
于 2013-04-08T19:43:39.177 回答