【发布时间】:2017-03-24 23:25:36
【问题描述】:
我的两个 ForEach 循环允许访问 errorOrders(用户名及其错误数)和 totalOrders(用户名及其总订单数)。
我的代码不断循环通过这两个 ForEache。 errorOrders 和 totalOrders 的“计数”都是 38,程序循环遍历所有 38 个用户就好了。但随后它会一次又一次地循环遍历它们,重新执行刚刚完成的过程。
我怎样才能只循环一次用户?
foreach (KeyValuePair<string, int> error in errorOrders)
{
foreach (KeyValuePair<string, int> total in totalOrders)
{
errPercentage = ((double)error.Value / (double)total.Value);
Console.WriteLine("Percentage of errors for " + total.Key + ": " + Math.Round(errPercentage, 2) * 100 + "%");
ordersPerHour = OrdersPerHour(total.Key);
RandomOrders = RandomSelect(errPercentage, total.Key);
Console.WriteLine("Number of orders pulled : " + RandomOrders.Rows.Count);
//Print out orders randomly collected
for (int i = 0; i < RandomOrders.Rows.Count; i++)
{
Console.WriteLine(RandomOrders.Rows[i]["ControlNumber"]);
}
Console.WriteLine("\r\n");
//NumOrdersToPull = FindNumOrdersToPull(Math.Round(errPercentage,2), ordersPerHour);
}
}
【问题讨论】:
-
你真的需要遍历 totalOrders for each 错误吗?另外,根据您写的描述,似乎每个订单都有错误。
-
为什么要使用嵌套循环?我会想象 errorOrders 会小于 totalOrders 并且您不希望在每个错误消息上循环通过 totalOrders。
-
你说这个循环覆盖用户......在哪里?我在这段代码中没有看到任何关于用户的信息。另外,什么是 RandomSelect 和 RandomOrders?
标签: c# foreach keyvaluepair