2010-12-18 56 views
4

雖然類似於this question這給了我LINQ的部分問題,但我錯過了一些看起來很明顯的事情,以避免循環遍歷的最後一步字典。Get keys as List <> from Dictionary對於某些值

我有一個詞典,我想獲得一個鍵列表只是爲值爲true的項目。現在我這樣做:

Dictionary<long,bool> ItemChecklist; 
... 


var selectedValues = ItemChecklist.Where(item => item.Value).ToList(); 

List<long> values = new List<long>(); 
foreach (KeyValuePair<long,bool> kvp in selectedValues) { 
    values.Add(kvp.Key); 
} 

有什麼辦法,我可以直接去List<long>沒有做這個循環?

回答

5

要做到這一點在一條語句:

var values = ItemChecklist.Where(item => item.Value).Select(item => item.Key).ToList(); 
4

嘗試使用Enumerable.Select

List<long> result = ItemChecklist.Where(kvp => kvp.Value) 
           .Select(kvp => kvp.Key) 
           .ToList(); 
+0

哇。 11秒...謝謝。既然你們都回答了同樣的問題,我把它交給了那些更需要它的人:) – 2010-12-18 21:42:50

相關問題