我的工作原理对象列表(例如字符串列表,如this question中所述)
但是如何配置SSIS ForEach任务来遍历List<Dog>
或数组Dog[]
,其中Dog
是一个简单的对象:
public class Dog {
public string Name{ get; set;}
public string BestTrick{ get; set;}
}
让我们说我试图将Name
和BestTrick
放入两个字符串循环变量中以便在循环中使用。
将变量映射到'变量映射'选项卡上的位置0和1似乎不会这样做。
答案 0 :(得分:2)
SSIS中的Foreach循环用于迭代对象列表。因此,对于上面的示例,您有一个一维列表List<Dog>
,作为循环的输入。要获取列表中的当前项,您需要指定到索引0的变量映射。
如果你有一个二维列表,让我们说List<Dog,Owner>
然后你会通过将变量映射到索引0来检索当前的Dog对象,并通过映射到索引1来检索当前的所有者。
在变量中拥有当前对象后,可以通过将其转换为脚本任务中的相应类型来获取其属性。在脚本中,您可以调用dog.Name
并将其保存到另一个变量中,以便在其他组件中使用。
这是脚本任务代码(C#)的一个示例,它从变量中检索狗对象,然后将其Name
和BestTrick
保存到两个不同的变量中。
public void Main()
Dog d = (Dog) Dts.Variables["Dog"].Value;
Dts.Variables["DogName"].Value = d.Name;
Dts.Variables["DogTrick"].Value = d.BestTrick;
}
请注意,您必须在其属性中为脚本任务创建您想要编辑或读取的每个变量