【发布时间】:2011-05-29 00:35:00
【问题描述】:
我正在遍历数据表中的每一行:
foreach (DataRow row in dt.Rows) {}
我想获取 dt 数据表中当前行的索引。例如:
int index = dt.Rows[current row number]
我该怎么做?
【问题讨论】:
-
告诉我们您正在使用哪个数据库,获取的行号会有所不同。例如,在 Oracle 中,您选择
rownum。
我正在遍历数据表中的每一行:
foreach (DataRow row in dt.Rows) {}
我想获取 dt 数据表中当前行的索引。例如:
int index = dt.Rows[current row number]
我该怎么做?
【问题讨论】:
rownum。
int index = dt.Rows.IndexOf(row);
但你可能最好使用 for 循环而不是 foreach。
【讨论】:
如果您需要正在处理的项目的索引,那么使用foreach 循环是迭代集合的错误方法。改变你循环的方式,这样你就有了索引:
for(int i = 0; i < dt.Rows.Count; i++)
{
// your index is in i
var row = dt.Rows[i];
}
【讨论】:
这里有两种选择。
单个行只是代表数据,所以它不会知道它位于哪一行。
【讨论】:
你为什么不试试这个
for(int i=0; i < dt.Rows.Count; i++)
{
// u can use here the i
}
【讨论】:
您知道 DataRow 是 DataTable 的行,对吗?
您当前已经遍历每一行的内容。您只需要跟踪有多少行才能获取当前行。
int i = 0;
int index = 0;
foreach (DataRow row in dt.Rows)
{
index = i;
// do stuff
i++;
}
【讨论】:
ArrayList check = new ArrayList();
for (int i = 0; i < oDS.Tables[0].Rows.Count; i++)
{
int iValue = Convert.ToInt32(oDS.Tables[0].Rows[i][3].ToString());
check.Add(iValue);
}
【讨论】:
试试:
int i = Convert.ToInt32(dt.Rows.Count);
我认为这是最短的,因此也是最简单的方法。
【讨论】: