Преобразовать переменную пакета типа System.Object в список <String>с помощью задачи сценария SSIS C # - PullRequest
0 голосов
/ 08 февраля 2019

Я использую следующий код:

Object duplicateDevices = Dts.Variables["User::DuplicateDevices"].Value;
        List<DuplicateDeviceModel> lstduplicateDevices = (List<DuplicateDeviceModel>)duplicateDevices;

User::DuplicateDevices объявлен как объект в переменной, но в задаче сценария, когда при вводе типа я получаю ошибку приведения типа;Я хотел, чтобы это было преобразовано в List<DuplicateDeviceModel>

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

В сценарии попробуйте сначала заполнить таблицу данных из объектной переменной DuplicateDevices.После этого заполните список типа DuplicateDeviceModel таблицей данных.Не зная столбцы или типы данных, с которыми вы работаете, приведенный ниже пример является общим, и столбцы, а также их типы данных необходимо будет корректировать в соответствии с теми, которые вы используете.

using System.Collections.Generic;
using System.Data.OleDb;


        List<DuplicateDeviceModel> lstduplicateDevices = new List<DuplicateDeviceModel>();

        DataTable dt = new DataTable();
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.Fill(dt, Dts.Variables["User::DuplicateDevices"].Value);

        foreach (DataRow dr in dt.Rows)
           {
            //convert columns from data type to data types of list as necessary
            lstduplicateDevices.Add(new DuplicateDeviceModel() { 
            ColumnA = Convert.ToInt32(dr[0]),
            ColumnB = dr[1].ToString() });
            }
0 голосов
/ 08 февраля 2019

Попробуйте преобразовать в IEnumerable, используя следующий синтаксис:

IEnumerable lstduplicateDevices = duplicateDevices as IEnumerable;

Если это работает, вы можете указать `, используя следующий синтаксис:

IEnumerable<DuplicateDeviceModel> ieDDM = lstduplicateDevices.OfType<DuplicateDeviceModel>();

Ссылка

...