int[] mitems = new int[] { 99, 98, 92, 97, 95 };
//pass the variable as "@item()"
var forEachActivity = new ForEachActivity()
{
Name = "ForEachActivity",
IsSequential = false,
Items = mitems,
Activities = activities
};
这不编译,在Items = mitems报告错误,期待Expression并且我不确定如何在Expression中提供项目。
答案 0 :(得分:0)
我从未创建过这种类型的活动,但我可以帮助你解决一些麻烦。如果读取ForEachActivity对象的构造函数方法,则可以看到items参数必须是Expression类的对象。创建表达式时,它会在value参数中使用一个字符串。
文档(这里:https://docs.microsoft.com/en-us/azure/data-factory/control-flow-for-each-activity#type-properties)表示Items是"表达式返回要迭代的JSON数组,这有点奇怪。"所以我的猜测是你必须传递一个带有json格式的String来创建这个Expression对象。
所以你能做的就是用这样的东西替换mitems对象的创建:
Expression mitems = new Expression("{99, 98, 92, 97, 95 }");
希望这有帮助!!
答案 1 :(得分:0)
这对我有用
Items = new Expression {Value =“@Json('[10,20,30,40,50]')”}
答案 2 :(得分:0)
我也在努力解决这个问题,但我想我现在已经开始工作了。 Items属性是一个Expression,它看起来像这样:
new ForEachActivity
{
Name = "myForEachLoop",
IsSequential = false,
Items = new Expression("@pipeline().parameters.foreachFileList"),
Activities = new List<Activity>
{
...
}
}
&#13;
管道参数看起来像这样
Parameters = new Dictionary<string, ParameterSpecification>
{
{ "foreachFileList", new ParameterSpecification { Type = ParameterType.Array } }
}
&#13;
最后,将参数传递给您的管道将如下所示:
Dictionary<string, object> arguments = new Dictionary<string, object>
{
{ "foreachFileList", new string[] { "file1.txt", "file2.txt" } }
};
client.Pipelines.CreateRunWithHttpMessagesAsync(resourceGroup, dataFactoryName, pipelineName, arguments)
&#13;