[英]simplify nested for loop in c#
我需要简化嵌套的for循环的帮助,还是已经成为最佳方法而又不增加更多复杂性
var multiParamValues = new Dictionary<string, string[]>();
multiParamValues.Add("ParamA", new string[] {"1", "2"});
multiParamValues.Add("ParamB", new string[] {"55", "56"});
var nameOfParameter = multiParamValues.ToList();
var numberOfParameters = nameOfParameter[0].Value.Length;
for (var k = 0; k < numberOfParameters; k++)
{
for (var i = 0; i < multiParamValues.Count; i++)
{
Console.WriteLine("{0}, {1}", nameOfParameter[i].Key, nameOfParameter[i].Value[k]);
}
}
预期成绩:
ParamA, 1
ParamB, 55
ParamA, 2
ParamB, 56
我认为这没什么大不了的,但是您不必将Dictionary转换为List。
var multiParamValues = new Dictionary<string, string[]>();
multiParamValues.Add("ParamA", new string[] { "1", "2" });
multiParamValues.Add("ParamB", new string[] { "55", "56" });
var numberOfParameters = multiParamValues.First().Value.Length;
for (var k = 0; k < numberOfParameters; k++)
{
foreach (var item in multiParamValues)
{
Console.WriteLine("{0}, {1}", item.Key, item.Value[k]);
}
}
请注意,C#规范不保证Dictionary中元素的顺序。
您可以进行一些改进。 首先,您可以以更紧凑的方式初始化字典 :
var multiParamValues = new Dictionary<string, string[]>
{
{"ParamA", new[] {"1", "2"}},
{"ParamB", new[] {"55", "56"}}
};
要么
var multiParamValues1 = new Dictionary<string, string[]>
{
["ParamA"] = new[] {"1", "2"},
["ParamB"] = new[] {"55", "56"}
};
其次,您可以通过使用foreach而不是for循环来消除对索引的使用:
foreach (var multiParamValue in multiParamValues)
{
foreach (var value in multiParamValue.Value)
{
Console.WriteLine("{0}, {1}", multiParamValue.Key, value);
}
}
最后,您可以使用字符串插值来简化输出字符串:
Console.WriteLine($"{key}, {value}");
因此,最终代码可能如下所示:
var multiParamValues = new Dictionary<string, string[]>
{
{"ParamA", new[] {"1", "2"}},
{"ParamB", new[] {"55", "56"}}
};
foreach (var paramValue in multiParamValues)
{
foreach (var value in paramValue.Value)
{
Console.WriteLine($"{paramValue.Key}, {value}");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.