2011-01-28 3 views
6

Tengo una DataTable disponible que contiene miles de filas. Hay una columna llamada EmpID que contiene '0' para algunas de las filas. Quiero eliminarlos de mi DataTable actual y quiero crear una nueva DataTable correcta. No puedo ir fila por fila comprobándolo, ya que contiene una gran cantidad de datos. Dame una sugerencia para superar este problema.¿Cómo eliminar filas de la enorme tabla de datos sin iterar?

Respuesta

7

la mejor manera sería filtrar en su origen (si es posible) - por lo que si lo está creando a partir de una base de datos, excluir a los 0 valores en su propia consulta SQL usando una donde

de partida. net 2.0, ms mejoró la lógica de filtrado en la tabla de datos en gran medida. así que si usó la vista de datos (en la parte superior de su tabla de datos) y agregó la cláusula where allí y agregó algún tipo de índices de tiempo de ejecución en este campo, le daría los resultados deseados sin recorrer todos los registros

+0

agradezco su respuesta para darme una idea de la vista de datos. Gracias. Voy a intentar esto y volver a ti. – NayeemKhan

1

Puede usar DataTable.Select("EmpID <> 0"). Esto devolverá una matriz de DataRows de la que puede crear su nueva DataTable si es necesario.

1

¿No es posible seleccionar primero las filas con EmpID = 0 y luego iterar solo sobre estas?

 DataTable newTable = new DataTable(); 
     foreach (DataRow dr in oldTable.Select("EmpID = '0'")) { 
      newTable.Rows.Add(dr); 
      oldTable.Rows.Remove(dr); 
     } 
+0

Eché de menos que también quería mover las filas a una nueva tabla, actualicé la respuesta – Ozzy

0

Puede intentarlo

DataRow [] temp = table.Select ("EmpID = '0'");

foreach(DataRow dr in temp) 
    { 
    table.Rows.Remove(dr); 
    } 

table.acceptchanges();

Cuestiones relacionadas