2014-10-10 39 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; 
}