我可以使用以下代码将 a 转换enum
为 a 。string
但是,它只存储一个选定的值。在选择了两个值的情况下,当我使用 NHibernate 存储它时,它会被截断。
这是我的代码:
MyEnum { One, Two, Three, Four, Five }
private static readonly string[] myEnum =
Enum.GetNames(typeof(MyEnum));
public string MyProperty
{
get {
var value = new MyEnum();
int i = (int)value;
return i >= 0 && i < myEnum.Length ?
myEnum[i] : i.ToString(); }
set {
Record.MyProperty= value ==
null ? null : String.Join(",", value); }
}
Record
只是public virtual string MyProperty { get; set; }
任何人都可以提供我将如何存储的示例,例如以逗号分隔的形式,enum
选择多个(例如,用户选择“一、二、五”并且所有三个都存储在数据库中)?
更新:
我正在尝试在以下位置执行此操作get{}
:
foreach (int i in Enum.GetValues(typeof(MyEnum)))
{
return i >= 0 && i < myEnum.Length ? myEnum[i] : i.ToString();
}
但我得到一个not all code paths return a value
错误。
问题更新:
如果我用两个这样做string
:
part.MyProperty = record.MyProperty;
使用IEnumerable<MyEnum>
@Jamie Ide 下面的答案将不起作用,因为我无法转换string
为MyEnum
.
我将如何编写最后一部分以IEnumerable<MyEnum>
从以下答案中的@Jamie Ide 获取代码才能工作?