Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:从字典中获取所有对,其中pair.key位于字符串数组中_C#_Linq - Fatal编程技术网

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

C# LINQ:从字典中获取所有对,其中pair.key位于字符串数组中,c#,linq,C#,Linq,有人能帮我把这个翻译成LINQ吗? 我有一个字符串数组(step.Variables)、一个字典(Parameters),我希望参数中的所有对都位于step.Variables中 这段代码可以工作,但我想使用LINQ,我不知道如何翻译: parameters = new Dictionary<string, string>(); foreach (string variable in step.Variables) { if (Parameters.ContainsKey(v

有人能帮我把这个翻译成LINQ吗? 我有一个字符串数组(step.Variables)、一个字典(Parameters),我希望参数中的所有对都位于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.Where(p=>step.Variables.Contains(p.Key))
                           .ToDictionary(p=>p.Key,p.Value); 

您需要首先过滤
参数
字典,查看键是否在
变量
集合中,并转换结果,即
IEnumerable
,如果
步骤中存在键,则过滤出
参数
字典。变量
然后将其转换为字典

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

如果可以,可以考虑使用RESARPER。在可能的情况下,它会将任何循环转换为LINQ。
var parameters = Parameters.Where(p => steps.Variables.Contains(p.Key)).ToDictionary(p => p.Key);