<分区>
假设我有天数列表:
- 周日 - 1
- 周一 - 2
- 周二 - 4
- 周三 - 8
- 周四 - 16
- 周五 - 32
- 周六 - 64
现在用户可以从 list 中选择一个或多个。我的数据库只存储天数的总和(例如:如果用户选择了星期日和星期一,那么数据库中存储的值是 3)。现在我想显示用户天数他选择了。计算这个的公式是什么。
我应该为此编写二进制逻辑吗??
<分区>
假设我有天数列表:
现在用户可以从 list 中选择一个或多个。我的数据库只存储天数的总和(例如:如果用户选择了星期日和星期一,那么数据库中存储的值是 3)。现在我想显示用户天数他选择了。计算这个的公式是什么。
我应该为此编写二进制逻辑吗??
最佳答案
创建 Flags枚举工作日以将它们视为位域:
[Flags]
public enum WeekDays
{
Sun = 1,
Mon = 2,
Tue = 4,
Wed = 8,
Thu = 16,
Fri = 32,
Sat = 64
}
然后保存到数据库
WeekDays value = WeekDays.Sun | WeekDays.Mon; // Sun, Mon
从数据库读取时使用 HasFlag验证值是否包含给定工作日的方法(如果在枚举值中设置了给定位字段):
WeekDays value = ReadValueFromDatabase();
foreach(WeekDays day in Enum.GetValues(typeof(WeekDays)))
{
if (value.HasFlag(day))
// day is selected
}
这与位运算的用法相同:
(value & day) == day
关于c# - 根据 DaysLIST 的值总和获取天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24484300/