我需要帮助来解决asp.net C#中的此问题

时间:2018-11-18 19:57:24

标签: c# asp.net dataset

有两个数据集ds和ds1。如果两个数据集的值匹配,则想更改数据列表的背景色。我们正在比较两个数据集,但没有比较值。

for (Int32 i = 0; i < ds.Tables[0].Rows.Count-1; i++)
{ 
  for (Int32 x = 0; x < ds1.Tables[0].Rows.Count-1; x++) 
  { 
    if (ds.Tables[0].Rows[i][0].ToString() == ds1.Tables[0].Rows[x][0].ToString()) 
    { 
      DataList1.ItemStyle.BackColor = System.Drawing.Color.Red; 
    }
    else 
    { 
      DataList1.ItemStyle.BackColor = System.Drawing.Color.Green; 
    } 
  } 
} 

2 个答案:

答案 0 :(得分:1)

您应该在找到匹配项后中断循环,否则循环将继续进行,并且每次匹配值时都会更改颜色,直到两个循环结束为止。以下是如何摆脱嵌套循环的答案:Breaking out of a nested loop

答案 1 :(得分:0)

如@Greg所述,您确实需要在找到匹配项后中断循环。

还有,如果您需要扫描数据集中的所有行,请更改循环定义:

for (Int32 i = 0; i < ds.Tables[0].Rows.Count; i++)
{ 
  for (Int32 x = 0; x < ds1.Tables[0].Rows.Count; x++) 

在您的代码中,您将跳过两个数据集的最后一行,因为循环将在其计数器等于Count - 2时结束。