SSIS foreach со списком простых объектов - PullRequest
2 голосов
/ 21 февраля 2011

re: SSIS Foreach Циклическая задача с переменной:

У меня это работает для Списка примитивных объектов (например, списка строк, как обсуждалось в этот вопрос )

Но как настроить задачу SSIS ForEach для цикла по List<Dog> или массиву Dog[], где Dog - простой объект, подобный этому:

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

Допустим, я пытаюсь получить Name и BestTrick в две строковые переменные цикла для использования внутри цикла.

Отображение переменных в позиции 0 и 1 на вкладке «Отображение переменных», похоже, не делает этого.

1 Ответ

2 голосов
/ 29 марта 2011

Цикл Foreach в SSIS используется для итерации по списку объектов. Итак, для приведенного выше примера у вас есть одномерный список, List<Dog>, в качестве входа в цикл. Чтобы получить текущий элемент в списке, необходимо указать переменную, сопоставляемую с индексом 0.

Если бы у вас был двумерный список, скажем, List<Dog,Owner>, тогда вы бы извлекли текущий объект Dog, сопоставив переменную с индексом 0, а текущего Владельца - с индексом 1.

Если у вас есть текущий объект в переменной, вы можете получить его свойства, приведя его к соответствующему типу в задаче сценария. Внутри скрипта вы можете вызвать dog.Name и сохранить его в другой переменной для использования в других компонентах.

Это пример кода задачи скрипта (C #), который извлекает объект dog из переменной, а затем сохраняет его Name и BestTrick в двух разных переменных.

 public void Main()

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

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

    }

Обратите внимание, что каждая переменная, которую вы хотите редактировать или прочитать, должна быть известна задаче сценария в ее свойствах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...