简化C#中的嵌套循环

时间:2019-04-23 03:28:28

标签: c# loops for-loop refactoring

我需要简化嵌套的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

2 个答案:

答案 0 :(得分:0)

我认为这没什么大不了的,但是您不必将Dictionary转换为List。

AccessJwtToken.java, 
CustomAuthenticationEntryPoint.java, 
JwtAuthenticationFilter.java, 
JwtAuthenticationProvider.java, 
JwtAuthenticationSuccessHandler.java, 
JwtHeaderTokenExtractor.java, 
JwtToken.java, 
JwtTokenFactory.java, 
UserContext.java

请注意,C#规范不保证Dictionary中元素的顺序。

答案 1 :(得分:0)

您可以进行一些改进。 首先,您可以以更紧凑的方式initialize dictionary

Select Product_ID,
Max(Date(Sales_Date)) as Max_Sales_date
From Table1 A
where Sales_Date='01/31/2019' (not Harcode)
Group by Product_ID

Select Product_ID,
Max(Date(Sales_Date)) as Max_Sales_date
From Table1 A
where Sales_Date='01/31/2019' (not Harcode)
Group by Product_ID

var multiParamValues = new Dictionary<string, string[]>
{
    {"ParamA", new[] {"1", "2"}},
    {"ParamB", new[] {"55", "56"}}
};

第二,您可以通过使用foreach而不是for循环来消除对索引的使用:

var multiParamValues1 = new Dictionary<string, string[]>
{
    ["ParamA"] = new[] {"1", "2"},
    ["ParamB"] = new[] {"55", "56"}
};

最后,您可以使用string interpolation简化输出字符串:

foreach (var multiParamValue in multiParamValues)
{
    foreach (var value in multiParamValue.Value)
    {
        Console.WriteLine("{0}, {1}", multiParamValue.Key, value);
    }
}

因此,最终代码可能如下所示:

Console.WriteLine($"{key}, {value}");