如何在 WWF 中循环访问数据表

本文关键字:循环 访问 数据表 WWF | 更新日期: 2023-09-27 18:19:03

探索世界自然基金会 我在处理DataTable时遇到了困难。假设我有一个表,我想根据该表中每一行的数据进行一些计算。为此,我将在工作流中添加一个CodeActivity作为第一步,该步骤将读取该表并使用数据填充DataTable(将存储为工作流的私有字段(。我以为之后我会使用 ReplicatorActivity(MSDN 建议它作为 foreach 循环的替代品(来迭代数据,并且它将有另一个CodeActivity,它将根据行的数据进行所有计算。问题是ReplicatorActivity只能通过System.Collections.IList进行迭代,但正如我们所知,System.Data.DataTable.Rows属于DataRowCollection型,它通过InternalDataCollectionBase实现ICollectionIEnumerable,但不能IList

  • 你有什么建议?在这种情况下,我应该使用 WhileActivity 而不是 ReplicatorActivity,还是其他方法?
  • 我应该在单个长时间运行的CodeActivity中执行所有计算吗?

如何在 WWF 中循环访问数据表

根据你所描述的内容,单个代码活动可以简单地处理业务。查看以下代码并构造如下所示的内容:

public sealed class TableManipulationActivity : CodeActivity<DataTable>
{
    [Required]
    public InArgument<DataTable> TableInArgument { get; set; }
    private DataTable _table;
    protected override DataTable Execute(CodeActivityContext context)
    {
        _table = TableInArgument.Get(context);
        // play with _table value and do whatever you want [All sorts of CRUD operations]
        var result = new DataTable(); // populate this result 
        // Manipulate result 
        // ...
        // ...
        return result;
    }
}

根据您的问题描述,上述方法非常简单且可重用。