在WF4中使用AddToCollection添加许多项目(工作流程)

时间:2010-10-12 00:54:33

标签: .net workflow-foundation-4

我在WF4中使用List(Of String),因为我想执行set操作(比如get distinct等)并且有一个qs。关于使用AddToCollection活动。是否可以使用一个语句添加多个项目? 例如我想在一个活动中添加“alpha”,“bravo”,“charlie”而不是三个

Collection - String对我来说效果不好,因为我无法在客户端的C#调用中获取它。如果你有解决方案,我也可以使用它。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您不想创建代码活动,那么有一个快捷方式(我正在使用它)

使用“分配活动”按如下方式分配变量

  names = names.Union(New String()
    {"alpha","bravo","charlie"}).ToList()

答案 1 :(得分:1)

不,内置的AddToCollection活动仅支持一次添加一个。这很可能是因为它使用的IList interface不提供批量添加项目的方法,而不像具有AddRange的List。您应该能够非常轻松地编写AddManyToList活动。这里有一些示例代码可以帮助您:

public sealed class AddManyToList<T> : CodeActivity
{
    [RequiredArgument]
    public InArgument<List<T>> List
    {
       get;
       set;
    }

    [RequiredArgument]
    public InArgument<IEnumerable<T>> Items
    {
       get;
       set;
    }

    public override void Execute(CodeActivityContext context)
    {
       this.List.Get(context).AddRange(this.Items.Get(context))
    }
}