我正在尝试将enum
保存为数据库中以逗号分隔的列表。
我知道我可以做这样的事情来实际存储以逗号分隔的列表:
part.MyProperty = new[] {"foo", "bar"};
并且数据库将有一个条目" foo,bar"。
我不知道该怎么做才能存储enum
,例如:
public enum Choices { Choice1, Choice2, Choice3 }
我收集我必须使用Parse
和ToString
来使用enum
值,但我不知道该怎么做。
这似乎不对:
part.MyProperty = new[] return from name in Enum.GetNames(typeof(T))
let enumValue = Convert.ToString((T)Enum.Parse(typeof(T), name, true))
有什么想法吗?
答案 0 :(得分:5)
part.MyProperty = Enum.GetNames(typeof(Choices));
出了什么问题?
要获得以逗号分隔的列表,请使用String.Join
:
string csvEnums = string.Join(",", Enum.GetNames(typeof(Choices)));
答案 1 :(得分:0)
String.Join(",", Enum.GetNames(typeof(Choices)));
答案 2 :(得分:0)
此外,您可以构建自己的实用程序方法,以更好的语法获取枚举名称:
public static TEnum[] GetEnumValues<TEnum>() where TEnum : struct {
return (TEnum[])Enum.GetValues(typeof(TEnum));
}
然后:
Choices[] choices = GetEnumValues<Choices>();
或part.MyProperty = GetEnumValues<Choices>().Select(n=>n.ToString()).ToArray()
;
答案 3 :(得分:0)
[Flags]
public enum Choices {
Choice1 = 1,
Choice2 = 2,
Choice3 = 4
}
Choices a = Choices.Choice1 | Choices.Choice3;
Console.WriteLine(a.ToString());
输出:Choice1, Choice3