C# 根据DaysLIST中的值之和获取天数
假设我有一个天数列表:C# 根据DaysLIST中的值之和获取天数,c#,math,C#,Math,假设我有一个天数列表: 太阳-1 星期一至二 星期二-4 星期三-8 星期四至十六 星期五-32 Sat-64 现在用户可以从清单中选择一个或多个。我的数据库只存储天数的总和(例如:如果用户选择了sun和mon,则数据库中存储的值为3)。现在我想显示用户选择的天数。计算这个的公式是什么 我是否应该为此编写一个二进制逻辑???为周创建枚举,将其视为位字段: [Flags] public enum WeekDays { Sun = 1, Mon = 2, Tue = 4,
- 太阳-1
- 星期一至二
- 星期二-4
- 星期三-8
- 星期四至十六
- 星期五-32
- Sat-64
[Flags]
public enum WeekDays
{
Sun = 1,
Mon = 2,
Tue = 4,
Wed = 8,
Thu = 16,
Fri = 32,
Sat = 64
}
<pre>
private int GetRemainder(int DaySum)
{
int xRemainder = 0;
if(DaySum > 64)
xRemainder = DaySum % 64;
else if(DaySum > 32)
xRemainder = DaySum % 32;
else if(DaySum > 16)
xRemainder = DaySum % 16;
else if(DaySum > 8)
xRemainder = DaySum % 8;
else if(DaySum > 4)
xRemainder = DaySum % 4;
else if(DaySum > 2)
xRemainder = DaySum % 2;
else if(DaySum > 1)
xRemainder = DaySum % 1;
return xRemainder;
}
private string SelectedDay(int SumValue)
{
if((SumValue/64) > 0)
return "Saturday";
else if((SumValue/32) > 0)
return "Friday";
else if((SumValue/16) > 0)
return "Thursday";
else if((SumValue/8) > 0)
return "Wednesday";
else if((SumValue/4) > 0)
return "Tuesday";
else if((SumValue/2) > 0)
return "Monday";
else if((SumValue/1) > 0)
return "Sunday";
}
</pre>
<pre>
while(SumOfDaysSelected > 0)
{
if(DaysSelected == "")
DaysSelected = SelectedDay(SumOfDaysSelected);
else
DaysSelected = DaysSelected + "," + SelectedDay(SumOfDaysSelected);
SumOfDaysSelected = GetRemainder(SumOfDaysSelected);
}
</pre>
然后保存到数据库
WeekDays value = WeekDays.Sun | WeekDays.Mon; // Sun, Mon
从数据库读取数据时,使用方法验证值是否包含给定的星期天(如果在枚举值中设置了给定的位字段):
这与按位操作的用法相同:
(value & day) == day
创建周天数的枚举以将其视为位字段:
[Flags]
public enum WeekDays
{
Sun = 1,
Mon = 2,
Tue = 4,
Wed = 8,
Thu = 16,
Fri = 32,
Sat = 64
}
<pre>
private int GetRemainder(int DaySum)
{
int xRemainder = 0;
if(DaySum > 64)
xRemainder = DaySum % 64;
else if(DaySum > 32)
xRemainder = DaySum % 32;
else if(DaySum > 16)
xRemainder = DaySum % 16;
else if(DaySum > 8)
xRemainder = DaySum % 8;
else if(DaySum > 4)
xRemainder = DaySum % 4;
else if(DaySum > 2)
xRemainder = DaySum % 2;
else if(DaySum > 1)
xRemainder = DaySum % 1;
return xRemainder;
}
private string SelectedDay(int SumValue)
{
if((SumValue/64) > 0)
return "Saturday";
else if((SumValue/32) > 0)
return "Friday";
else if((SumValue/16) > 0)
return "Thursday";
else if((SumValue/8) > 0)
return "Wednesday";
else if((SumValue/4) > 0)
return "Tuesday";
else if((SumValue/2) > 0)
return "Monday";
else if((SumValue/1) > 0)
return "Sunday";
}
</pre>
<pre>
while(SumOfDaysSelected > 0)
{
if(DaysSelected == "")
DaysSelected = SelectedDay(SumOfDaysSelected);
else
DaysSelected = DaysSelected + "," + SelectedDay(SumOfDaysSelected);
SumOfDaysSelected = GetRemainder(SumOfDaysSelected);
}
</pre>
然后保存到数据库
WeekDays value = WeekDays.Sun | WeekDays.Mon; // Sun, Mon
从数据库读取数据时,使用方法验证值是否包含给定的星期天(如果在枚举值中设置了给定的位字段):
这与按位操作的用法相同:
(value & day) == day
试试这个:
[Flags]
public enum Day
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
}
Day d = Day.Friday | Day.Saturday;
Console.WriteLine(d);
Console.WriteLine((int)d);
这张照片是:
星期五、星期六和星期六
或者谢尔盖刚刚在我面前发布的内容…试试这个:
[Flags]
public enum Day
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
}
Day d = Day.Friday | Day.Saturday;
Console.WriteLine(d);
Console.WriteLine((int)d);
这张照片是:
星期五、星期六和星期六
或者Sergey刚才在我面前发布的内容…创建一个过程,该过程将从数据库或不从数据库中获取剩余金额
私有整数GetRequires(整数日和)
{
int x余数=0;
如果(日和>64)
xrements=日和%64;
否则,如果(日和>32)
X剩余=日和%32;
否则,如果(日和>16)
X剩余=日和%16;
否则,如果(日和>8)
X剩余=日和%8;
否则,如果(日和>4)
X剩余=日和%4;
否则,如果(日和>2)
X剩余=日和%2;
否则,如果(日和>1)
xrements=日和%1;
返回剩余部分;
}
私有字符串SelectedDay(int-SumValue)
{
如果((SumValue/64)>0)
返回“星期六”;
如果((SumValue/32)>0,则为else
返回“星期五”;
如果((SumValue/16)>0,则为else
返回“星期四”;
如果((SumValue/8)>0,则为else
返回“星期三”;
如果((SumValue/4)>0,则为else
返回“星期二”;
如果((SumValue/2)>0,则为else
返回“星期一”;
如果((SumValue/1)>0,则为else
返回“星期日”;
}
使用变量来存储值
int SUMOOFDAYSELECTED=0;
字符串DaysSelected=“”;
然后创建条件,根据变量SumOfDaysSelected的值检查选择的日期
而(选择的SumofDays>0)
{
如果(所选日期==“”)
DaysSelected=SelectedDay(SumOfDaysSelected);
其他的
DaysSelected=DaysSelected+,“+SelectedDay(SumOfDaysSelected);
SumOfDaysSelected=获取剩余(SumOfDaysSelected);
}
创建一个过程,该过程将从数据库中或不从数据库中获取总和的剩余部分
私有整数GetRequires(整数日和)
{
int x余数=0;
如果(日和>64)
xrements=日和%64;
否则,如果(日和>32)
X剩余=日和%32;
否则,如果(日和>16)
X剩余=日和%16;
否则,如果(日和>8)
X剩余=日和%8;
否则,如果(日和>4)
X剩余=日和%4;
否则,如果(日和>2)
X剩余=日和%2;
否则,如果(日和>1)
xrements=日和%1;
返回剩余部分;
}
私有字符串SelectedDay(int-SumValue)
{
如果((SumValue/64)>0)
返回“星期六”;
如果((SumValue/32)>0,则为else
返回“星期五”;
如果((SumValue/16)>0,则为else
返回“星期四”;
如果((SumValue/8)>0,则为else
返回“星期三”;
如果((SumValue/4)>0,则为else
返回“星期二”;
如果((SumValue/2)>0,则为else
返回“星期一”;
如果((SumValue/1)>0,则为else
返回“星期日”;
}
使用变量来存储值
int SUMOOFDAYSELECTED=0;
字符串DaysSelected=“”;
然后创建条件,根据变量SumOfDaysSelected的值检查选择的日期
而(选择的SumofDays>0)
{
如果(所选日期==“”)
DaysSelected=SelectedDay(SumOfDaysSelected);
其他的
DaysSelected=DaysSelected+,“+SelectedDay(SumOfDaysSelected);
SumOfDaysSelected=获取剩余(SumOfDaysSelected);
}
如果存储为二进制,则二进制逻辑应该是处理它的方法。但是正如@SergeyBerezovskiy所说的,您实际尝试了什么?如果您是以二进制存储,那么二进制逻辑应该是处理它的方法。但正如@SergeyBerezovskiy所说的,你到底尝试了什么?