2016-12-31 116 views
0

我这一周的天枚举:选择枚举值

public enum DaysOfWeek 
{ 
    Sunday, 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday 
} 

我想以这种存储用于保留数据的实体模型数组或选择DaysOfWeek列表在数据库中使用EF代码第一:

public IEnumerable<DaysOfWeek> SelectedWeekendDays { get; set; } 

应保持一个或多个 DaysOfWeek值,但是当作为填充这产生一个空值:

SelectedWeekendDays = new List<DaysOfWeek> { DaysOfWeek.Sunday, DaysOfWeek.Saturday } 

所以我的问题是,如何将选定的枚举值存储在实体模型中。任何帮助将不胜感激。

+0

是'SelectedWeekendDays'用于数据保存到数据库中?你还可以分享你的模型如何使用(EF代码第一或数据库第一等)? – Alexei

+0

Alexei:谢谢 - 更新 – RickL

回答

1

假设属性是你的视图模型,你可以用这种方法去:在你POCO类创建一个属性像下面和所选择的枚举存储在那里:

public DaysOfWeek SelectedEnum { get; set; } 

或者,如果你愿意,你可以只存储其数值

public int SelectedEnum { get; set; } 

更新

为多,你可以CR eate一个INT []代替,所以基本上:

public int[] SelectedEnum { get; set; } 

这里如何填充它:

public int[] Population() 
{ 
    int[] Example = { Convert.ToInt32(DaysOfWeek.Sunday), 
    Convert.ToInt32(DaysOfWeek.Saturday), so on... }; 
    return Example; 
} 
+0

Valkyriee:谢谢你的建议,但我试图存储一个或多个值。我试过int [] SelectedEnum但没有骰子 - 仍为空值 – RickL

+0

@RickLiguz如果你想持有多个项目你的方法是正确的,也许你是不正确地填充它? – Valkyrie

+0

@RickLiguz反正更新:) – Valkyrie

0

如果我是正确的,你应该把它定义Flag属性

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

以2的幂定义枚举常量,即1,2,4,8等等。这意味着组合枚举常量中的各个标志不会重叠。

并使用Enum.HasFlag检查所选枚举

+0

感谢您的建议 - 我之前没有遇到[Flags]属性,因此那是改进列表中的一个。我遇到的主要问题是(我认为)试图将枚举列表保存到数据库并检索它进行处理,这不起作用,并且不是要走的路。再次感谢 – RickL