在C#中,我有一个函数,它将一个int作为参数:
searchValue = (int)(svcMembership.Request.Active | svcMembership.Request.Inactive);
userClient.DelegateAccounts_Retrieve(searchValue);
我有一个CheckBoxList为这个列表提供选项,我已经从List<svcMembership.Request>
(svcMembership.Request
是一个枚举)中捕获了选定的项目。
有没有办法将该List转换为具有逻辑OR的整数,如第一个例子所示?
答案 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++; }
}