c#通过密钥列表从字典中获取值子集

chr*_*oph 7 c# dictionary

好的,所以您可以通过dictionary[key]或获得单个值或所有值dictionary.Values.

我正在寻找的是一种获取给定键集的所有值的方法:

List<string> keys;
Dictionary<string, object> dictionary;

List<object> valuesForKeys = GetValuesFromDictionaryUsingKeys(dictionary, keys);
Run Code Online (Sandbox Code Playgroud)

private List<object> GetValuesFromDictionaryUsingKeys(Dictionary<string, object> dictionary, List<string> keys)
{
    //your code here
}
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动遍历密钥列表并使用dictionary[key]每次并将所有值重新添加回列表,但我想使用更优雅的方式(例如Linq).

谢谢.

Raw*_*ing 15

试试keys.Where(k => dictionary.ContainsKey(k)).Select(k => dictionary[k]).


wat*_*rif 6

为什么在日常使用时可以使用通用扩展方法来编写函数?

public static IEnumerable<V> GetValues<K, V>(this IDictionary<K, V> dict, IEnumerable<K> keys)
{
    return keys.Select((x) => dict[x]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:比你写的:

var  valuesForKeys = dictionary.GetValues(keys).ToList();
Run Code Online (Sandbox Code Playgroud)