2012-01-26 12 views

Respuesta

96

Si necesita una referencia débil para el valor de la celda:

object field = d.Rows[0][3] 

o

object field = d.Rows[0].ItemArray[3] 

debe hacerlo

Si necesita una referencia fuertemente tipado (cadena en su caso) puede usar el método de extensión DataRowExtensions.Field:

string field = d.Rows[0].Field<string>(3); 

(asegúrese System.Data está en la lista de los espacios de nombres en este caso)

Los índices se basan 0 por lo que por primera vez a la primera fila (0) y luego la cuarta columna en esta fila (3)

+4

@OP Hemos de tener en cuenta que con frecuencia se le debería comprobar para asegurarse de que realmente hay suficientes filas/columnas cuando los valores de este tipo de codificación dura. – Servy

+0

Muy útil, ¡gracias! – MonkeyDoug

+0

ver también http://stackoverflow.com/a/13816531/638977 Sugiere 'int number = dt.Rows [i] .Field (j);' –

7
foreach(DataRow row in dt.Rows) 
{ 
    string value = row[3].ToString(); 
} 
54
string abc= dt.Rows[0]["column name"].ToString(); 
+0

¡Muchas gracias! – user3573738

9

también puede probar (primera celda de la cuarta columna):

dt.Rows[0][3] 
5

datos d es 0 en la fila y la columna 3 para el valor d:

DataTable table; 
String d = (String)table.Rows[0][3]; 
0
public V[] getV(DataTable dtCloned) 
{ 

    V[] objV = new V[dtCloned.Rows.Count]; 
    MyClasses mc = new MyClasses(); 
    int i = 0; 
    int intError = 0; 
    foreach (DataRow dr in dtCloned.Rows) 
    { 
     try 
     { 
      V vs = new V(); 
      vs.R = int.Parse(mc.ReplaceChar(dr["r"].ToString()).Trim()); 
      vs.S = Int64.Parse(mc.ReplaceChar(dr["s"].ToString()).Trim()); 
      objV[i] = vs; 
      i++; 
     } 
     catch (Exception ex) 
     { 
      // 
      DataRow row = dtError.NewRow(); 
      row["r"] = dr["r"].ToString(); 
      row["s"] = dr["s"].ToString(); 
      dtError.Rows.Add(row); 
      intError++; 
     } 
    } 
    return vs; 
} 
Cuestiones relacionadas