我需要根据键的子集从字典中选择多个值(放入列表中)。
我正在尝试使用 Linq 在一行代码中完成此操作,但到目前为止我发现的代码似乎相当长且笨拙。最短(最干净)的方法是什么?
这就是我现在所拥有的(键是字符串,keysToSelect 是要选择的键列表):
List<ValueType> selectedValues = dictionary1.Where(x => keysToSelect.Contains(x.Key))
.ToDictionary<String, valueType>(x => x.Key,
x => x.Value)
.Values.ToList;
谢谢。
那么你可以从列表而不是字典开始:
var selectedValues = keysToSelect.Where(dictionary1.ContainsKey)
.Select(x => dictionary1[x])
.ToList();
如果保证所有键都在字典中,您可以省略第一个Where
:
var selectedValues = keysToSelect.Select(x => dictionary1[x]).ToList();
请注意,此解决方案比迭代字典更快,特别是当要选择的键列表与字典的大小相比较小时,因为Dictionary.ContainsKey
比List.Contains
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)