虽然类似于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>
?
答案 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();