Accedi al valore della cella di datatable


85

Qualcuno può aiutarmi ad accedere ad esempio al valore della prima cella nella quarta colonna?

a b c d
1 2 3 5
g n m l

ad esempio, come accedere al valore d, se fosse databile?

Grazie.

Risposte:


134

Se hai bisogno di un riferimento debole al valore della cella:

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

o

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

Dovrebbe farlo

Se hai bisogno di un riferimento fortemente tipizzato (stringa nel tuo caso) puoi utilizzare il metodo di estensione DataRowExtensions.Field :

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

(assicurati che System.Data sia elencato negli spazi dei nomi in questo caso)

Gli indici sono basati su 0, quindi accediamo prima alla prima riga (0) e quindi alla quarta colonna di questa riga (3)


4
@OP Tieni presente che spesso ti consigliamo di controllare prima per assicurarti che ci siano davvero abbastanza righe / colonne quando codifichi valori come questo.
Servy

1
vedi anche stackoverflow.com/a/13816531/638977 Suggerisceint number = dt.Rows[i].Field<int>(j);
Behzad Ebrahimi


13

Puoi anche provare (prima cella nella 4a colonna):

dt.Rows[0][3]

8
foreach(DataRow row in dt.Rows)
{
    string value = row[3].ToString();
}

7

i dati d sono nella riga 0 e nella colonna 3 per il valore d:

DataTable table;
String d = (String)table.Rows[0][3];

1
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;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.