【发布时间】:2011-07-17 20:20:31
【问题描述】:
我的程序中有以下 foreach 循环:
Dictionary<string, int[]> summaryDate_clipsEpisodesImps = new Dictionary<string, int[]>();
Dictionary<string, int[]> summaryPartner_clipsEpisodesImps = new Dictionary<string, int[]>();
foreach (DataRow row1 in dt10.Rows)
{
int[] numbers = new int[3];
numbers[0] = 0;
numbers[1] = 0;
numbers[2] = 0;
if (!dictionary1.ContainsKey(row1["value1"].ToString().Trim()))
{
dictionary1.Add(row1["value1"].ToString().Trim(), numbers);
}
if (!dictionary2.ContainsKey(row1["value2"].ToString().Trim()))
{
dictionary2.Add(row1["value2"].ToString().Trim(), numbers);
}
if (row1["yes_or_no"].ToString().Trim() == "yes")
{
dictionary1[row1["value1"].ToString().Trim()][0] = dictionary1[row1["value1"].ToString().Trim()][0] + Convert.ToInt32(row1["a_number"]);
dictionary2[row1["value2"].ToString().Trim()][0] = dictionary2[row1["value2"].ToString().Trim()][0] + Convert.ToInt32(row1["a_number"]);
}
}
本质上,我正在遍历数据表并根据在每条记录中找到的值创建字符串/整数数组字典。然后我尝试根据记录中另一个字段的存在来增加数组中的第一个值。
当我检查 yes_or_no 值时,我的问题出现在 if 语句中。当此语句中存在第二行递增字典 2 时,字典 1 中的值将增加相同的值。我不知道为什么会这样。
如果这不完全清楚,请告诉我。提前感谢您的帮助。
【问题讨论】:
-
我不明白。
if语句中的代码清楚地将两个字典中的元素增加了相同的数量(row["a_number"])。你期待它做什么? -
另外,您应该在
foreach块的顶部附近评估一次row1["value1"].ToString().Trim(),并将其缓存在一个局部变量中(对于 value2 也是如此)。
标签: c# arrays string dictionary increment