c# - 根据 DaysLIST 的值总和获取天数

标签 c# math

<分区>

假设我有天数列表:

  • 周日 - 1
  • 周一 - 2
  • 周二 - 4
  • 周三 - 8
  • 周四 - 16
  • 周五 - 32
  • 周六 - 64

现在用户可以从 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/

相关文章:

c# - ASP.NET MVC 3 : StackOverflowException when using PartialView

c# - 替换具有 <UNKNOWN/> 标签的标签 <NPS></NPS>

c# - 对 SqlConnection 使用 context connection=true

java - Selenium WebDriver : Wait for complex page with JavaScript to load

c# - NServiceBus 中的 AoP 支持?

math - float 学坏了吗?

c# - 将 nfloat 截断到小数点后两位,但从不四舍五入

algorithm - 计算 "moving"协方差

php - 如何使用 PHP 获取到午夜的小时数

java - 为什么从 char 中减去错误?