将值设置为列表c#中的[Flags]枚举

本文关键字:Flags 枚举 中的 设置 列表 | 更新日期: 2023-09-27 18:26:07

我需要通过从列表中获取的项来设置Enum值。

我有枚举:

[Flags]
public enum EnumTest
{
    Val1= 1, 
    Val2= 2, 
    Val3= 4
}

带值列表:

var values = new List<EnumTest> {EnumTest.Val1, EnumTest.Val3};

如何使用foreach获得以下结果?

var result = EnumTest.Val1 | EnumTest.Val3;

感谢

将值设置为列表c#中的[Flags]枚举

下面是一个使用Linq:的解决方案

var result = values.Aggregate((x, y) => x |= y);
EnumTest result = 0;
foreach (EnumTest et in values)
{
   result |= et;
}