2

我正在尝试将一个enum以逗号分隔的列表保存在数据库中。

我知道我可以做这样的事情来实际存储一个逗号分隔的列表:

part.MyProperty = new[] {"foo", "bar"};

并且数据库将有一个条目“foo,bar”。

我不知道该怎么做是如何存储一个enum,例如:

public enum Choices { Choice1, Choice2, Choice3 }

我收集我必须使用ParseToString使用这些enum值,但我不知道该怎么做。

这似乎不对:

part.MyProperty = new[] return from name in Enum.GetNames(typeof(T))
   let enumValue = Convert.ToString((T)Enum.Parse(typeof(T), name, true))

有什么想法吗?

4

4 回答 4

7

有什么问题part.MyProperty = Enum.GetNames(typeof(Choices));

要获取逗号分隔列表,请使用String.Join

string csvEnums = string.Join(",", Enum.GetNames(typeof(Choices)));
于 2013-07-05T19:55:33.060 回答
1
String.Join(",", Enum.GetNames(typeof(Choices)));
于 2013-07-05T19:56:39.467 回答
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()

于 2013-07-05T20:02:12.653 回答
0
[Flags]
public enum Choices { 
   Choice1 = 1, 
   Choice2 = 2, 
   Choice3 = 4 
}

Choices a = Choices.Choice1 | Choices.Choice3;

Console.WriteLine(a.ToString());

输出:Choice1, Choice3

于 2013-07-05T20:04:39.813 回答