使用SSIS C#脚本任务

时间:2019-02-08 12:43:22

标签: c# ssis casting etl script-task

我正在使用以下代码:

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

User::DuplicateDevices在变量中但在脚本任务中被声明为对象,而在类型转换过程中却收到类型转换错误;我希望将其转换为List<DuplicateDeviceModel>

2 个答案:

答案 0 :(得分:0)

尝试使用以下语法转换为IEnumerable

IEnumerable lstduplicateDevices = duplicateDevices as IEnumerable;

如果可行,您可以使用以下语法指定`:

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

参考

答案 1 :(得分:0)

在脚本中,尝试首先从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() });
            }