2011-04-20 78 views
5

我試圖從Enum構建SelectList在Array類上使用Linq擴展

爲什麼Linq擴展方法在Array上不可用?

var values = Enum.GetValues(typeof(MyEnum)); 
var test = values.Select(x => x); // compile error 

但我可以寫這樣的,它編譯...

var test = from Enum e in values select new { e }; 

我通常不使用語法的這種風格,所以我真的不熟悉,但是,這不是」上述基本上與不編譯的lambda查詢相同?

回答

8

使用OfType方法獲取IEnumerable<T>可以查詢使用LINQ:

var values = Enum.GetValues(typeof(MyEnum)); 
var test = values.OfType<int>().Select(x => x);