有人可以帮我翻译成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.'":
答案 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);