我正在使用以下代码:
Object duplicateDevices = Dts.Variables["User::DuplicateDevices"].Value;
List<DuplicateDeviceModel> lstduplicateDevices = (List<DuplicateDeviceModel>)duplicateDevices;
User::DuplicateDevices
在变量中但在脚本任务中被声明为对象,而在类型转换过程中却收到类型转换错误;我希望将其转换为List<DuplicateDeviceModel>
答案 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() });
}