我在我的应用中使用DataTable
进行一些计算。我需要通过除第一行之外的所有行进行迭代。有可能吗?
类似的东西:
DataTable dt;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
//do something...
}
答案 0 :(得分:25)
LINQ是你的朋友:
DataTable dt;
foreach (DataRow r in dt.Rows.Cast<DataRow>().Skip(1))
{
//do something...
}
此处需要调用Cast()
,因为DataTable.Rows
实现了非通用IEnumerable
,而linq的扩展方法仅适用于IEnumerable<T>
您还有另一种选择:
DataTable dt;
foreach (DataRow r in dt.AsEnumerable().Skip(1))
{
//do something...
}
答案 1 :(得分:14)
好的,你得到了答案,但万一你不想使用linq。检查表中行的索引:
foreach (DataRow row in m_dtMatrix.Rows)
{
if (m_dtMatrix.Rows.IndexOf(row) != 0)
{
...
}
}
答案 2 :(得分:2)
这是一个快速而又脏的
DataTable dt;
bool isFirst = true;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
if( isFirst ) {
isFirst = false;
continue;
}
//do something...
}