Доступ к значению ячейки datatable


85

Может ли кто-нибудь помочь мне получить доступ, например, к значению первой ячейки в 4-м столбце?

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

например, как получить доступ к значению d, если оно может быть датировано?

Благодарю.

Ответы:


134

Если вам нужна слабая ссылка на значение ячейки:

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

или же

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

Должен сделать это

Если вам нужна строго типизированная ссылка (строка в вашем случае), вы можете использовать метод расширения DataRowExtensions.Field :

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

(в этом случае убедитесь, что System.Data указан в пространствах имен)

Индексы основаны на 0, поэтому сначала мы обращаемся к первой строке (0), а затем к 4-му столбцу в этой строке (3).


4
@OP Просто имейте в виду, что вам часто нужно сначала проверить, действительно ли достаточно строк / столбцов при жестком кодировании значений, подобных этому.
Servy

1
см. также stackoverflow.com/a/13816531/638977 Это наводит на мысльint number = dt.Rows[i].Field<int>(j);
Бехзад Эбрахими


13

Вы также можете попробовать (первая ячейка в 4-м столбце):

dt.Rows[0][3]


7

данные d находятся в строке 0 и столбце 3 для значения 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;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.