SSIS foreach带有一个简单对象列表

时间:2011-02-21 17:40:30

标签: sql-server ssis foreach

re:SSIS Foreach使用变量循环任务:

我的工作原理对象列表(例如字符串列表,如this question中所述)

但是如何配置SSIS ForEach任务来遍历List<Dog>或数组Dog[],其中Dog是一个简单的对象:

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

让我们说我试图将NameBestTrick放入两个字符串循环变量中以便在循环中使用。

将变量映射到'变量映射'选项卡上的位置0和1似乎不会这样做。

1 个答案:

答案 0 :(得分:2)

SSIS中的Foreach循环用于迭代对象列表。因此,对于上面的示例,您有一个一维列表List<Dog>,作为循环的输入。要获取列表中的当前项,您需要指定到索引0的变量映射。

如果你有一个二维列表,让我们说List<Dog,Owner>然后你会通过将变量映射到索引0来检索当前的Dog对象,并通过映射到索引1来检索当前的所有者。

在变量中拥有当前对象后,可以通过将其转换为脚本任务中的相应类型来获取其属性。在脚本中,您可以调用dog.Name并将其保存到另一个变量中,以便在其他组件中使用。

这是脚本任务代码(C#)的一个示例,它从变量中检索狗对象,然后将其NameBestTrick保存到两个不同的变量中。

 public void Main()

       Dog d = (Dog) Dts.Variables["Dog"].Value;

       Dts.Variables["DogName"].Value = d.Name;
       Dts.Variables["DogTrick"].Value = d.BestTrick;

    }

请注意,您必须在其属性中为脚本任务创建您想要编辑或读取的每个变量