我有一个带枚举属性的模型。当我调用我的服务时,模型会返回,我的enum-property包含以下数据:Test1 | Test2 | Test3
。
我想循环遍历该属性并将值分配给列表。
如何使用enum propery执行此操作?
var form = await _formService.GetById()
;
上面的代码生成一个带有枚举属性的结果,该属性名为Sections,其中包含我上面提供的数据,但我不知道如何循环使用它来获取值。
这是我的枚举:
[Flags]
public enum Sections
{
Test1= 0,
Test2= 1,
Test3= 2,
Test4= 4,
}
答案 0 :(得分:0)
这是你在找什么?
[Flags]
public enum Sections
{
Test1 = 0,
Test2 = 1,
Test3 = 2,
Test4 = 4,
}
public static List<Sections> getSectionsFromFlags(Sections flags)
{
var returnVal = new List<Sections>();
foreach (Sections item in Enum.GetValues(typeof(Sections)))
{
if ((int)(flags & item) > 0)
returnVal.Add(item);
}
return returnVal;
}
答案 1 :(得分:0)
如果您已经定义了这样的枚举
[Flags]
public enum Sections
{
Test1 = 0,
Test2 = 1,
Test3 = 2,
Test4 = 4,
}
然后
var someValue = Sections.Test1 | Sections.Test3 | Sections.Test4;
var values = Enum.GetValues(typeof(Sections))
.OfType<Sections>().Where(x=>(x&someValue)==x)
.ToArray();
values
现在包含所有三个值Sections.Test1 | Sections.Test3 | Sections.Test4
另一种解决方案(来自评论)
var values = Enum.GetValues(typeof(Sections))
.OfType<Sections>()
.Where(x=>someValue.HasFlag(x))
.ToArray();
最后一个是最正确的,我想。