Подтвердить что ты не робот

Получите значение ячейки из DataTable в С#

Вот DataTable dt, в котором много данных.

Я хочу получить конкретное значение Cell Value из DataTable, скажем Cell [i, j]. Где, i → Строки и j → Столбцы. Я буду перебирать значение i, j двумя forloops.

Но я не могу понять, как я могу назвать ячейку своим индексом.

Здесь код:

for (i = 0; i <= dt.Rows.Count - 1; i++)
        {
            for (j = 0; j <= dt.Columns.Count - 1; j++)
            {
                var cell = dt.Rows[i][j];
                xlWorkSheet.Cells[i + 1, j + 1] = cell;
            }
        }
4b9b3361

Ответ 1

DataRow также имеет indexer:

Object cellValue = dt.Rows[i][j];

Но я бы предпочел строго типизированный метод расширения Field, который также поддерживает типы с нулевым значением:

int number = dt.Rows[i].Field<int>(j);

или даже более читабельным и менее подверженным ошибкам имя столбца:

double otherNumber = dt.Rows[i].Field<double>("DoubleColumn");

Ответ 2

Вероятно, вам нужно ссылаться на него с Rows, а не на ячейку:

var cellValue = dt.Rows[i][j];

Ответ 3

Вы можете выполнить итерацию DataTable следующим образом:

private void button1_Click(object sender, EventArgs e)
{
    for(int i = 0; i< dt.Rows.Count;i++)
        for (int j = 0; j <dt.Columns.Count ; j++)
        {
            object o = dt.Rows[i].ItemArray[j];
            //if you want to get the string
            //string s = o = dt.Rows[i].ItemArray[j].ToString();
        }
}

В зависимости от типа данных в ячейке DataTable вы можете отбросить объект к тому, что хотите.

Ответ 4

Вы также можете вызвать индексатор непосредственно на переменную datatable:

var cellValue = dt[i].ColumnName

Ответ 5

вы не можете, но, В качестве альтернативы вы можете использовать таблицу, с помощью которой вы заполнили dataGridView.

Ответ 6

Если я правильно понял ваш вопрос, вы хотите отобразить одну конкретную ячейку вашего заполненного datatable? Это то, что я использовал для отображения данной ячейки в моем DataGrid.

var s  = dataGridView2.Rows[i].Cells[j].Value;
txt_Country.Text = s.ToString();

Надеюсь, что это поможет