2010-12-18 63 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

相关问题