DataTable - foreach Row,EXCEPT FIRST ONE

时间:2012-01-13 15:24:14

标签: c# .net datatable iteration datarow

我在我的应用中使用DataTable进行一些计算。我需要通过除第一行之外的所有行进行迭代。有可能吗?

类似的东西:

DataTable dt;

foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
    //do something...
}

3 个答案:

答案 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...
}