以INT形式查询DayOfWeek,如何将其分解为天数

本文关键字:分解 INT 查询 DayOfWeek | 更新日期: 2023-09-27 18:16:47

好了,我有这个enum

public enum DaysOfWeek
{
    [EnumMember]
    Monday = 1,
    [EnumMember]
    Tuesday = 2,
    [EnumMember]
    Wednesday = 4,
    [EnumMember]
    Thursday = 8,
    [EnumMember]
    Friday = 16,
    [EnumMember]
    Saturday = 32,
    [EnumMember]
    Sunday = 64
}

该enum以INT形式存储在DB中。它们是通过复选框插入的,因此,例如,如果我选中星期一和星期二,它们将根据它们的总价值存储为3(1+2)。

现在我想查询回此数据,并且只有3作为输出,我如何将其转换回日,星期一和星期二。

谢谢。

以INT形式查询DayOfWeek,如何将其分解为天数

为了能够正确设置,您需要用FlagsAttribute装饰enum。

[Flags]
public enum DaysOfWeek
{
    [EnumMember]
    Monday = 1,
    [EnumMember]
    Tuesday = 2,
    [EnumMember]
    Wednesday = 4,
    [EnumMember]
    Thursday = 8,
    [EnumMember]
    Friday = 16,
    [EnumMember]
    Saturday = 32,
    [EnumMember]
    Sunday = 64
}

则设置3表示同时选择MondayTuesday

这将输出Monday, Tuesday:

Console.WriteLine(((DaysOfWeek)3).ToString());