LINQ:从字典中获取所有对,其中pair.key在字符串数组中

时间:2017-11-20 17:11:29

标签: c# linq

有人可以帮我翻译成LINQ吗? 我有一个字符串数组(step.Variables),一个字典(参数),我希望参数中的所有对,其中键是step.Variables。

此代码有效,但我想使用LINQ,我无法弄清楚如何翻译:

parameters = new Dictionary<string, string>();
foreach (string variable in step.Variables)
{
    if (Parameters.ContainsKey(variable))
    {
        parameters[variable] = Parameters[variable];
    }
}

这是我最好的猜测但是得到了解释:

var parameters = Parameters.ToDictionary(pair => step.Variables.Contains(pair.Key.ToString())).Select(pair => pair);

"System.ArgumentException: 'An item with the same key has already been added.'":

2 个答案:

答案 0 :(得分:5)

如果我理解得很好,你需要的是:

var parameters = Parameters.Where(p=>step.Variables.Contains(p.Key))
                           .ToDictionary(p=>p.Key,p.Value); 

您需要首先过滤Parameter字典以查看该密钥是否在Variables集合中,并将结果IEnumerable<KeyValuePair<string, string>>转换为Dictionary<string, string> < / p>

答案 1 :(得分:0)

如果Parameters中存在密钥,则过滤掉step.Variables字典,然后将其转换为字典。

var parameters = Parameters.Where(p => steps.Variables.Contains(p.Key)).ToDictionary(p => p.Key);