您可以使用枚举,而不是使用布尔数组。
public class Recurrency
{
public int Id { get; set; }
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public DaysOfWeek IsRecurrent { get; set; }
}
[Flags]
public enum DaysOfWeek
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
}
在您的数据库中 DaysOfWeek 将存储为整数。该整数将映射到一周中每一天的真/假。
例如 DaysOfWeek == 22,将是(星期一、星期二和星期四)。或者,如果您将其视为布尔数组(假(1),真(2),真(4),假(8),真(16),假(32),假(64))
要设置 IsRecurrent,您可以使用按位 (|) 来组合天数。
var recurrency = new Recurrency();
recurrency.IsRecurrent = DaysOfWeek.Monday | DaysOfWeek.Friday;
然后查询您可以使用的值是 HasFlag 方法。
var recurrency = db.Recurrencies.Find(1);
if (recurrency.IsRecurrent.HasFlag(DaysOfWeek.Monday | DaysOfWeek.Sunday)
{
// do something
}