如何通过按位与操作从列表生成逗号分隔的目标值字符串
基于位运算实现选中值的文本拼接
核心实现代码
假设已获取到包含ID、Type、Value的数据源列表_data,且ID均为2的幂,根据保存的总和值(如5)生成目标字符串的代码如下:
int savedVal = 5; // 筛选出被选中的条目 var selectedItems = _data.Where(item => (savedVal & item.ID) > 0); // 拼接成逗号分隔的Value字符串 string result = string.Join(", ", selectedItems.Select(item => item.Value)); // 输出结果:Test1, Test3
逻辑说明
- 位运算筛选:由于每个
ID是2的幂,二进制仅一位为1,通过savedVal & item.ID操作,若结果大于0,说明该ID对应的选项被选中(该位在总和值中处于激活状态)。 - 字符串拼接:使用
string.Join直接将筛选出的Value字段按指定格式拼接,若没有选中项会返回空字符串,无需额外处理分隔符问题。
结合数据库查询的完整示例
如果需要从数据库查询数据后直接处理,可整合为:
int savedVal = 5; var clubData = await _context.clubs.Where(x => x.Type == "NewTown").ToListAsync(); string selectedValues = string.Join(", ", clubData.Where(item => (savedVal & item.ID) > 0).Select(item => item.Value) );
内容的提问来源于stack exchange,提问作者IntelligentCancer
相关产品推荐
相关产品推荐

