DataTable - foreach Row, кроме первого - PullRequest
9 голосов
/ 13 января 2012

Я использую DataTable для некоторых вычислений в моем приложении. Мне нужно сделать итерацию через все строки, кроме первой. Возможно ли это?

Что-то вроде:

DataTable dt;

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

Ответы [ 3 ]

25 голосов
/ 13 января 2012

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...
}
14 голосов
/ 13 января 2012

Хорошо, вы получили ответы, но если вы не хотите использовать linq.Проверьте индекс строки в таблице:

            foreach (DataRow row in m_dtMatrix.Rows)
            {
                if (m_dtMatrix.Rows.IndexOf(row) != 0)
                {
                    ...
                }
            }
2 голосов
/ 13 января 2012

Вот быстрая и грязная

DataTable dt;

bool isFirst = true;

foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
    if( isFirst ) {
        isFirst = false;
        continue;
    }
    //do something...
}
...