ブール配列を使用する代わりに、列挙型を使用できます。
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が整数として格納されます。その整数は、曜日ごとにtrue/falseにマップされます。
たとえば、DaysOfWeek == 22は、(月曜日、火曜日、木曜日)になります。または、ブール値の配列と考えた場合(false(1)、true(2)、true(4)、false(8)、true(16)、false(32)、false(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
}