【问题标题】:SSIS foreach with a list of simple objects带有简单对象列表的 SSIS foreach
【发布时间】:2011-02-21 17:40:29
【问题描述】:

回复:SSISForeach 带有变量的循环任务:

我将这个用于原始对象列表(例如,字符串列表,如 this question 中所述)

但是如何配置 SSIS ForEach 任务以循环通过 List<Dog> 或数组 Dog[] 其中 Dog 是一个像这样的简单对象:

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

假设我正在尝试将 NameBestTrick 放入两个字符串循环变量中,以便在循环内使用。

将变量映射到“变量映射”选项卡上的位置 0 和 1 似乎没有做到这一点。

【问题讨论】:

    标签: sql-server ssis foreach


    【解决方案1】:

    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;
    
        }
    

    请注意,您必须在其属性中让脚本任务知道要编辑或读取的每个变量

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多