数据表循环只检查第一行而不是继续下一行c#

时间:2017-11-22 07:34:48

标签: c# asp.net

我在数据表中有2行,第一行包含" P"和" B",第二个只包含" P",但这个循环只检查第一行

edging

1 个答案:

答案 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