Zugriff auf den Zellenwert von datatable


81

Kann mir jemand helfen, wie ich zum Beispiel auf den Wert der ersten Zelle in der 4. Spalte zugreifen kann?

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

Wie kann man beispielsweise auf den Wert d zugreifen, wenn dieser datierbar wäre?

Vielen Dank.

Antworten:


131

Wenn Sie einen schwachen Verweis auf den Zellenwert benötigen:

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

oder

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

Sollte es tun

Wenn Sie eine stark typisierte Referenz benötigen (in Ihrem Fall eine Zeichenfolge), können Sie die Erweiterungsmethode DataRowExtensions.Field verwenden:

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

(Stellen Sie sicher, dass System.Data in diesem Fall in den Namespaces aufgeführt ist.)

Indizes basieren auf 0, daher greifen wir zuerst auf die erste Zeile (0) und dann auf die vierte Spalte in dieser Zeile (3) zu.


4
@OP Denken Sie daran, dass Sie häufig zuerst überprüfen möchten, um sicherzustellen, dass bei solchen harten Codierungswerten wirklich genügend Zeilen / Spalten vorhanden sind.
Servy

1
siehe auch stackoverflow.com/a/13816531/638977 Es schlägt vorint number = dt.Rows[i].Field<int>(j);
Behzad Ebrahimi


13

Sie können auch versuchen (erste Zelle in der 4. Spalte):

dt.Rows[0][3]


7

Daten d befinden sich in Zeile 0 und Spalte 3 für den Wert 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;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.