基本上,我有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)
您可以使用的ItemArray
(type object[]
) 属性并从 列到DataRow
迭代其元素。tab.Columns.IndexOf("Trade Price 1")
tab.Columns.IndexOf("Trade Price 16")
但请注意,如果列顺序由于某种原因发生变化,您的代码可能会崩溃。安全的方法是通过索引器迭代项目 - row["Trade Price " + i]
。