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

Имя DataColumn из DataRow (не DataTable)

Мне нужно итерировать имя столбца и тип столбца из определенной строки. Все примеры, которые я видел, повторили целый набор данных. Я хочу передать одну строку функции, чтобы выполнить кучу условной обработки. Я хочу отделить условную обработку для удобства чтения.

Это то, что у меня есть:

private void doMore(DataRow dr)
{
    foreach (DataColumn c in dr.ItemArray)  //loop through the columns. 
    {
        MessageBox.Show(c.ColumnName.ToString());
    }
}

Возвращенная ошибка:

System.InvalidCastException: Невозможно применить объект типа "System.String" к типу "System.Data.DataColumn".

Как мне получить имя столбца из строки или у меня нет выбора и должен передать всю функцию datatable функции?

4b9b3361

Ответ 1

Вам все равно нужно пройти класс DataTable. Но вы можете сделать это, используя свой экземпляр DataRow, используя свойство Table.

foreach (DataColumn c in dr.Table.Columns)  //loop through the columns. 
{
    MessageBox.Show(c.ColumnName);
}

Ответ 2

Вы можете сделать это проще в коде (если вы все равно это делаете), используя расширение объекта DataRow, например:

static class Extensions
{
    public static string GetColumn(this DataRow Row, int Ordinal)
    {
        return Row.Table.Columns[Ordinal].ColumnName;
    }
}

Затем вызовите его, используя:

string MyColumnName = MyRow.GetColumn(5);

Ответ 3

Вам нужно что-то вроде этого:

foreach(DataColumn c in dr.Table.Columns)
{
  MessageBox.Show(c.ColumnName);
}

Ответ 4

вместо этого используйте объект DataTable:

 private void doMore(DataTable dt)
    {
    foreach(DataColumn dc in dt.Columns)
    {
    MessageBox.Show(dc.ColumnName);
    }
    }