有两个数据集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;
}
}
}
答案 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
时结束。