我在数据表中有2行,第一行包含" P"和" B",第二个只包含" P",但这个循环只检查第一行
edging
答案 0 :(得分:1)
cekjabatan = dt.Rows[0].ItemArray[2].ToString(); //this value not change to next row
因为您在每次迭代时始终访问相同的位置。
您可以使用实例化为迭代器的变量j
cekjabatan = dt.Rows[j].ItemArray[2].ToString();
但要注意在所有assingments之后递增它(作为for-loop块中的最后一个语句),否则你将丢失第一个元素。
但是这个解决方案使得迭代器变量row
过时了。您应该按预期使用循环变量:
foreach (DataRow row in dt.Rows)
{
cekjabatan = row.ItemArray[2].ToString(); //this value not change to next row
cekkode = row.ItemArray[0].ToString(); //this value not change to next row
if (cekkode.Contains("A") && cekkode.Contains("P") || cekkode.Contains("B") && cekkode.Contains("P") || cekkode.Contains("C") && cekkode.Contains("P"))
{
ceksubstring = cekkode.Substring(0, 4);
}
else if (cekkode.Contains("P") && !cekkode.Contains("B"))
{
ceksubstring = cekkode.Substring(0, 3);
}
}
在这种情况下,您可以完全删除int j