2010-11-04 13 views
1

emums的子集,我有一個枚舉採摘使用LINQ(綁定W /組合框

public enum Positions : byte 
{ 
    Manager = 0, 
    CEO = 1, 
    Lawyer =2, 
    Intern =3, 
    Janitor = 4, 
} 

是否有可能得到這些emums的一個子集,在WPF組合框綁定?說只有那些枚舉值< ?= 2> = 0我嘗試:

var subset = from p in Positions where p <= 2 && p >= 0 select p; 
myComboBox.ItemsSource = subset; 

沒有成功(位置標記爲有錯誤「找不到查詢模式的實現......」)

我想日在這將是很好使用LINQ,但如果有另一種簡單的方法,那也會很有趣。 謝謝, 戴夫

回答

3

你需要得到枚舉值,並將其轉換爲正確的類型:

var subset = from p in Enum.GetValues(typeof(Positions)).Cast<int>() 
      where p <= 2 && p >= 0 select (Positions)p; 
+0

的「演員」被標記爲錯誤。你必須在ArrayList(和其他類)上使用「Cast」。 Enum.GetValues(...)返回數組。我試圖從數組中創建一個ArrayList而沒有成功。無論如何,這將是複雜的。思考? – Dave 2010-11-04 19:47:28

+0

上面的代碼在我的機器上編譯得很好。你忘了放置一個「使用System.Linq;」在你的代碼文件的頂部? – 2010-11-04 20:09:42

+0

恥辱我!就是這樣。感謝我已經把「使用System.Linq」,並能夠簡化它甚至更多: – Dave 2010-11-04 20:28:18