Получите значение ячейки из 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;
}
}
Ответы
Ответ 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();
Надеюсь, что это поможет