Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环遍历数据行中的每个元素_C#_Loops_Foreach - Fatal编程技术网

C# 循环遍历数据行中的每个元素

C# 循环遍历数据行中的每个元素,c#,loops,foreach,C#,Loops,Foreach,基本上,我有一个DataTable,如下所示: 我想在每行的每个元素上运行一个具有参数的方法 AddProductPrice(SKU, Price, PriceBracket) 例如…: 如果我们获取第一行数据,该方法将运行16次,每次一次总价X不为空 因此,对于第一行中的第一个总价,调用将为: AddProductPrice(SKU, <Total Price 1 value>, 1) AddProductPrice(SKU, <Total Price 2 value&

基本上,我有一个
DataTable
,如下所示:

我想在每行的每个元素上运行一个具有参数的方法

AddProductPrice(SKU, Price, PriceBracket)
例如…:

如果我们获取第一行数据,该方法将运行16次,每次一次
总价X
不为空

因此,对于第一行中的第一个总价,调用将为:

AddProductPrice(SKU, <Total Price 1 value>, 1)
AddProductPrice(SKU, <Total Price 2 value>, 2)
AddProductPrice(SKU,1)
对于第一行的第二个总价,调用将为:

AddProductPrice(SKU, <Total Price 1 value>, 1)
AddProductPrice(SKU, <Total Price 2 value>, 2)
AddProductPrice(SKU,2)
请注意:对于全国销售要素,电话将是:

AddProductPrice(SKU, <National Selling value>, 16)
AddProductPrice(SKU,16)

是否有一种巧妙的方法来循环遍历
数据行中的每个元素,以提高过程的效率?

您可以使用
数据行的
项目数组
(键入
对象[]
)属性,并从列
tab.Columns.IndexOf(“交易价格1”)
tab.Columns.IndexOf迭代其元素(“交易价格16”)


但是要小心,如果列顺序因某种原因发生更改,您的代码可能会中断。安全的方法是通过索引器迭代项-
行[“交易价格”+i]
循环数据表。列收集和分析基于列名

for(int i=0;i < dt.Columns.Count; i++)
{
  if (dt.Columns[i].ColumnName.StartsWith("Total Price"))
  {
    var curBracket = Convert.ToInt32(dt.Columns[i].ColumnName.SubString(11));
    AddProductPrice(SKU, curRow[dt.Columns[i].ColumnName, curBracket);
  }
}
for(int i=0;i
对于每一行,在各列之间循环,然后找到“总价”、“全国销售”的索引,并相应地添加产品价格

    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        DataRow myRow = dataTable.Rows[i];
        for (int j = 0; j < dataTable.Columns.Count; j++)
        {
            if (dataTable.Columns[j].ColumnName.IndexOf("Total Price") > 0)
            {
                AddProductPrice(SKU, myRow.ItemArray[j], j);
            }
            else if (dataTable.Columns[j].ColumnName.IndexOf("National Selling") > 0)
            {
                AddProductPrice(SKU, myRow.ItemArray[j], 16); //
            }
        }
    }
for(int i=0;i0)
{
AddProductPrice(SKU,myRow.ItemArray[j],j);
}
else if(dataTable.Columns[j].ColumnName.IndexOf(“全国销售”)>0)
{
AddProductPrice(SKU,myRow.ItemArray[j],16)//
}
}
}

“聪明”比什么?你做了什么?干杯,西蒙,我会尝试一下,看看效果如何,如果我开始有问题,你有电子邮件地址吗?