gpt4 book ai didi

c# - 如何在 SSIS 脚本任务中传递自定义对象列表?

转载 作者:行者123 更新时间:2023-11-30 15:24:55 25 4
gpt4 key购买 nike

我有一个脚本任务,它创建一个自定义对象列表并将它们设置为一个 SSIS 对象变量。

自定义类:

public class Dog
{
public string Name { get; set; }
}

填充列表并设置为 SSIS 对象变量“myDogs”的代码:

public void Main()
{
List<Dog> dogs = new List<Dog>();

Dog dog1 = new Dog();
dog1.Name = "Fido";

Dog dog2 = new Dog();
dog1.Name = "Roofus";

dogs.Add(dog1);
dogs.Add(dog2);

Dts.Variables["myDogs"].Value = dogs;
}

在第二个脚本任务中,我试图将我的“myDogs”对象变量读回到列表中:

在第二个脚本任务中复制的自定义类:

public class Dog
{
public string Name { get; set; }
}

我的第二个脚本任务中的主要代码:

public void Main()
{
var varDogs = Dts.Variables["myDogs"].Value;
List<Dog> dogs = new List<Dog>();

dogs = (List<Dog>)varDogs;
}

我的 varDogs 对象正确地从我的 SSIS 对象变量“myDogs”加载数据。但是,当我尝试将 varDogs 转换为 Dog 类型的列表时,我收到一条错误消息,指出“无法转换 System.Collections.Generic.List 类型的对象”。

有谁知道我如何才能将此 var 数据转换回列表?谢谢。

最佳答案

使用 SSIS 时最简单的方法是使用 DataTable。在这个例子中,我刚刚通过 SQL 任务填充了我的对象以简化它。

C#代码

public class Dog
{
public string Name { get; set; }
}

public void Main()
{


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


List<Dog> dogList = new List<Dog>();
for (int i = 0; i < dt.Rows.Count; i++)
{
Dog dogs = new Dog();
dogs.Name = dt.Rows[i]["Name"].ToString();
dogList.Add(dogs);

}
Dts.TaskResult = (int)ScriptResults.Success;
}

数据表结果

enter image description here

列出结果

enter image description here

关于c# - 如何在 SSIS 脚本任务中传递自定义对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com