2013-02-11 58 views
1

我有一個枚舉,我想用字典做一個映射器。C#詞典:LINQ(選擇不同的鍵值)這些是枚舉

這是我的枚舉:

public enum PrintOrderStatus 
{ 
    Pending = 1, 
    Confirmed = 2, 
    PreparedForPrint = 3, 
    PreparedForDevlivery = 4, 
    Delivered = 5, 
    Canceled = int.MaxValue, 
} 

,這是我的字典:

var map = new Dictionary<PrintOrderStatus, PrintOrderStatus[]> 
{ 
    { PrintOrderStatus.Pending, new[] { PrintOrderStatus.Canceled, 
             PrintOrderStatus.Confirmed } }, 
    { PrintOrderStatus.Confirmed, new[] { PrintOrderStatus.PreparedForPrint, 
              PrintOrderStatus.PreparedForDevlivery } }, 
    { PrintOrderStatus.PreparedForDevlivery, new[] { PrintOrderStatus.Delivered } }, 
}; 

鑑於我的實體的當前狀態,我怎麼能有不同的密鑰值在數組中?

+0

你面臨的問題究竟是什麼? – IronMan84 2013-02-11 16:01:21

+0

你有什麼,你想得到什麼?我的樣品中也沒有看到任何看起來像LINQ的東西。 – 2013-02-11 16:01:25

+0

我想要選擇這個字典的值,當我有密鑰。使用LINQ – 2013-02-11 16:02:26

回答

1

要獲得與在字典中鍵關聯的值,你應該做的:

var myStatuses = map[currentStatus]; 
1
var posibleStatuses = map[entity.currentStatus] 
1

其他兩個答案解決從關鍵值會,但爲了以防萬一,你想從價值到關鍵(的問題是根本不清楚),嘗試:

var keys = map.Where(x => x.Value.Contains(PrintOrderStatus.Canceled)) 
       .Select(x => x.Key); 

注意這將返回該有它的價值的所有鍵的列表。如果您只想要第一個,請使用.First()而不是.Select()