Типизированная строка данных — вставка данных на основе имени столбца

У меня есть таблица, в которой я храню данные на основе определенных критериев. Обе таблицы являются типизированными.
tblShipper содержит около 10 столбцов, а tblParsedData – 3 столбца (ID, FieldName, FieldValue).

Я создал строку из tblShipper, чтобы добавить FieldValue для каждого столбца. Однако, как мы знаем, типизированная строка будет отображать имена столбцов.

Я не могу найти способ сделать что-то вроде кода ниже или что-то лучше.

MyDataset.tblShipperRow _newRow = _tblShipper.NewtblShipperRow();
foreach(tblParsedDataRow _row in _parsedDataForShipper.Rows)
    _newRow[_row.FieldName] = _row.FieldValue;
_tblShipper.Rows.Add(_newRow);

Подробнее:
tblParsingParams хранит параметры, мы используем эти параметры для чтения данных из файла, анализируем прочитанные данные и сохраняем их в формате ключ/значение в tblParsedData.

tblParsedData имеет такие поля, как: ключ, значение, имя таблицы (таблица, для которой эти данные), имя столбца.

Во время выполнения я создаю набор данных для tblShipper или любой другой таблицы, затем загружаю данные из tblParsedData в таблицу данных. Теперь мне нужно вставить данные из таблицы данных tblParsedData в набор данных tblShipper. Привяжите этот набор данных к представлению сетки, чтобы пользователь мог просматривать и проверять/редактировать данные, а затем сохранять их в базе данных (tblShipper).

Дубликат: https://stackoverflow.com/questions/29388544/insert-data-into-typed-row-on-the-fly-based-on-column-name


person Hitin    schedule 02.04.2015    source источник


Ответы (1)


Наконец-то я нашел способ сделать это. Для этого я использовал отражение, использовал отражение, чтобы загрузить все свойства типизированной строки и сравнить его с именем столбца. Если оно совпадает, установите значение с помощью отражения. Легкий!

MyDataset.tblShipperRow _newRow = _tblShipper.NewtblShipperRow();
foreach(tblParsedDataRow _row in _parsedDataForShipper.Rows)
{    
      foreach (var property in _newRow.GetType().GetProperties())
      {
            if (_row.FieldName == property.Name)
            {
                 property.SetValue(_newRow, _row.FieldValue, null);
                 break;
            }
      }
}

Немного использовал из поста ниже

Как установить значение свойства с помощью Reflection?

person Hitin    schedule 02.04.2015