获取密钥为List<>来自字典的某些值

时间:2010-12-18 21:26:29

标签: c# linq

虽然类似于this question给了我LINQ以解决部分问题,但我遗漏了一些似乎必须显而易见的事情,以避免循环遍历字典的最后一步。

我有一个字典,我想得到一个键的列表,只列出值为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>

2 个答案:

答案 0 :(得分:6)

要在一个声明中完成:

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

答案 1 :(得分:4)

尝试使用Enumerable.Select

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