循环遍历DataRow中的每个元素

swa*_*987 12 c# foreach loops

基本上,我有DataTable如下:

在此输入图像描述

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

AddProductPrice(SKU, Price, PriceBracket)
Run Code Online (Sandbox Code Playgroud)

举个例子...:

如果我们取第一行数据,该方法将运行16次,每次一次Total Price X不为空.

因此,对于第一行中的第一个总价格,呼叫将是:

AddProductPrice(SKU, <Total Price 1 value>, 1)
Run Code Online (Sandbox Code Playgroud)

然后,对于第一行中的第二个总价格,呼叫将是:

AddProductPrice(SKU, <Total Price 2 value>, 2)
Run Code Online (Sandbox Code Playgroud)

请注意:对于National Selling元素,电话会是:

AddProductPrice(SKU, <National Selling value>, 16)
Run Code Online (Sandbox Code Playgroud)

是否有一种聪明的方法来循环遍历每个元素DataRow以使该过程更有效?

Eli*_*ain 15

对于每一行,循环遍历列,然后查找"总价","全国销售"索引并相应地添加产品价格.

    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); //
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)


Mag*_*tLU 3

您可以使用的ItemArray(type object[]) 属性并从 列到DataRow迭代其元素。tab.Columns.IndexOf("Trade Price 1")tab.Columns.IndexOf("Trade Price 16")

但请注意,如果列顺序由于某种原因发生变化,您的代码可能会崩溃。安全的方法是通过索引器迭代项目 - row["Trade Price " + i]