如何从字典中获取值列表,其中键与 C# 中的列表相匹配

Mee*_*ena 3 c# dictionary list

我有一本字典,我想根据键上的条件从字典中检索所有值列表,即我只想检索列表中相应键匹配的值。

示例:字典如下

IDictionary<string, string> maskingValues = new Dictionary<string, string>();
maskingValues.Add("cat", "Me@ena");
maskingValues.Add("dog", "N&avya");
maskingValues.Add("llama", "vivek!a");
maskingValues.Add("iguana", "sh^ams");
Run Code Online (Sandbox Code Playgroud)

我有字符串列表

List<string> keysString = new List<string>();
keysString.Add("cat");
keysString.Add("fox");
Run Code Online (Sandbox Code Playgroud)

现在我的要求是从字典中获取值列表,其中键与keysString列表相匹配。

输出应该是

Me@ena
Run Code Online (Sandbox Code Playgroud)

到目前为止我所做的是

var all_parameters = maskingValues .Keys.ToList();

var parameters_to_mask = all_parameters.Intersect(keysString);

var values_list = parameters_to_mask.Where(k => data_dictionary.ContainsKey(k)).Select(k => data_dictionary[k]);
Run Code Online (Sandbox Code Playgroud)

所以 values_list将包含输出Me@ena,我从字典中检索所有键,然后将键列表与列表进行比较keysString,然后从两个列表相交的输出中检索值列表。但我可以以更优化的方式做到这一点,以便代码和性能良好。

提前致谢。请帮帮我。

Sad*_*que 5

这应该有效:

var q = maskingValues.Where(x => keysString.Contains(x.Key)).Select(x => x.Value);
foreach (var item in q)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)