我已经声明了布尔标志如下。
[Flags]
public enum StudentStatus
{
True = 1,
False = 2
}
我通过下面一行的DataValues集合获取值,我想将它分配给下面的属性。
var student= new Student();
student.Status= StudentInfo.Data.DataValues
.Where(m => m.FieldName.Equals("Status"))
.Select(m => m.StatusValue).SingleOrDefault();
答案 0 :(得分:1)
由于您使用的是.Net Framework 4,因此可以使用Enum.TryParse方法。
var student= new Student();
string status = StudentInfo.Data.DataValues
.Where(m => m.FieldName.Equals("Status"))
.Select(m => m.StatusValue).SingleOrDefault();
StudentStatus studentStatus;
Enum.TryParse(status, out studentStatus);
student.Status = studentStatus;
如果解析操作失败,则结果包含StudentStatus
的默认值。
答案 1 :(得分:0)
首先,该枚举不适合作为[Flags]
枚举。 [Flags]
仅在一次可以激活许多不同值时使用。它应该声明为:
// Removed [Flags] - not appropriate here.
public enum StudentStatus
{
True = 1,
False = 2
}
在任何情况下,您都可以使用Enum.Parse
将字符串解析回枚举。像这样:
string statusString = StudentInfo.Data.DataValues
.Where(m => m.FieldName.Equals("Status"))
.Select(m => m.StatusValue).SingleOrDefault();
student.Status = (StudentStatus) Enum.Parse(typeof(StudentStatus), statusString);
这适用于[Flags]
和普通枚举。