DataTable - foreach Row,EXCEPT FIRST ONE

use*_*533 9 .net c# iteration datatable datarow

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

就像是:

DataTable dt;

foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

Adi*_*ter 26

LINQ是你的朋友:

DataTable dt;
foreach (DataRow r in dt.Rows.Cast<DataRow>().Skip(1))
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

Cast()此处需要调用,因为DataTable.Rows实现了非泛型IEnumerable,而linq的扩展方法仅适用于IEnumerable<T>

您还有另一种选择:

DataTable dt;
foreach (DataRow r in dt.AsEnumerable().Skip(1))
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

  • 不,它不应该,因为`Skip`需要忽略的项目数. (4认同)

Ork*_*zen 15

好的,你得到了答案,但万一你不想使用linq.检查表中行的索引:

            foreach (DataRow row in m_dtMatrix.Rows)
            {
                if (m_dtMatrix.Rows.IndexOf(row) != 0)
                {
                    ...
                }
            }
Run Code Online (Sandbox Code Playgroud)