SSIS foreach 与简单对象列表

发布于 2024-10-18 10:41:33 字数 760 浏览 4 评论 0 原文

回复: SSIS Foreach 带变量的循环任务:

我将其用于原始对象列表(例如字符串列表,如 这个问题

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

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

可以说我正在尝试获取 < code>Name 和 BestTrick 转换为两个字符串循环变量以在循环内使用。

将变量映射到“变量映射”选项卡上的位置 0 和 1 似乎不起作用。

re: SSIS Foreach Loop task with a Variable:

I have this working for a List of primitive objects (e.g. a list of strings, as discussed in this question)

But how do you configure an SSIS ForEach task to loop through a List<Dog> or array Dog[] where Dog is a simple object like this:

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

Lets say I'm trying to get Name and BestTrick into two string loop variables for use inside the loop.

Mapping variables to position 0 and 1 on the 'variable mappings' tab doesn't seem to do it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青芜 2024-10-25 10:41:33

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

如果您有一个二维列表,假设 List 那么您将检索当前的 Dog 对象通过将变量映射到索引 0,将当前所有者映射到索引 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;

    }

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

The Foreach Loop in SSIS is used for iterating over a list of objects. So, for the example above you have a one dimensional list, List<Dog>, as an input to the loop. To get the current item in the list you need to specify a variable mapping to index 0.

If you had a two dimensional list, lets say List<Dog,Owner> then you would retrieve the current Dog object by mapping a variable to index 0, and the current Owner by mapping to index 1.

Once you have the current object in a variable you can get its properties by casting it to the appropriate type in a Script Task. Inside the script you can call dog.Name and save it to another variable for use in other components.

This is an example of the Script Task code (C#) which retrieves the dog object from a variable, and then saves its Name and BestTrick to two different variables.

 public void Main()

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

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

    }

Please note that you will have to make each variable you want to edit or read known to the Script Task in its properties

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文