2014-10-10 87 views
2

我需要从列表中取出项目来设置枚举值。将值设置为[标志]列表c中的枚举#

我有枚举:

[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; 

感谢

+1

的可能重复[?我如何枚举在C#枚举(h​​ttp://stackoverflow.com/问题/ 105372 /我如何枚举enum-in-c) – Nikola 2014-10-10 13:34:00

+0

@Nikola不是重复的。这里有一个迭代的具体列表。 – hvd 2014-10-10 13:34:58

+0

@尼古拉谢谢。 http://stackoverflow.com/questions/105372/how-do-i-enumerate-an-enum-in-c/944352#944352这个答案很有帮助。 – Pavel 2014-10-10 13:41:57

回答

4

这里的使用LINQ的解决方案:

var result = values.Aggregate((x, y) => x |= y); 
+0

感谢您的优雅解决方案 – Pavel 2014-10-10 13:44:30

3
EnumTest result = 0; 

foreach (EnumTest et in values) 
{ 
    result |= et; 
}