2012-01-13 34 views
6

Estoy usando un DataTable para algunos cálculos en mi aplicación. Necesito hacer la iteración a través de todas las filas excepto la primera. ¿Es posible?DataTable - foreach Fila, EXCEPTO PRIMERO UNO

Algo así como:

DataTable dt; 

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

Respuesta

8

Ok tienes sus respuestas, pero en caso de que no desee utilizar LINQ. Compruebe el índice de la fila en la tabla:

  foreach (DataRow row in m_dtMatrix.Rows) 
      { 
       if (m_dtMatrix.Rows.IndexOf(row) != 0) 
       { 
        ... 
       } 
      } 
+0

también debe tener cuidado porque creo que la "primera" fila depende de la definición de clasificación de su tabla de datos. –

+0

al final decidí no ir con LINQ, así que usé su respuesta. Gracias a todos por las respuestas. – user1080533

17

LINQ es su amigo:

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

La llamada a Cast() se requiere aquí desde DataTable.Rows implementa el no genérico IEnumerable, y los métodos de extensión de LINQ sólo están disponibles para IEnumerable<T>

También tiene otra opción:

DataTable dt; 
foreach (DataRow r in dt.AsEnumerable().Skip(1)) 
{ 
    //do something... 
} 
+0

gracias :) pude encontrar sintaxis correcta para que – user1080533

+0

oh, sólo una cosa ... ¿No debería haber Saltee (0)? – user1080533

+2

No, no debería, ya que 'Saltar' toma la cantidad de elementos que se deben ignorar. – Nuffin

2

Aquí está un rápido y sucio

DataTable dt; 

bool isFirst = true; 

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

Maldito Lester, ahora me veo como un novato. – Matthew

Cuestiones relacionadas