如何在WWF中遍历DataTable?

时间:2014-08-21 15:48:20

标签: c# datatable workflow-foundation

探索WWF我遇到了处理DataTable的困难。假设我有一个表,我想根据该表中每一行的数据进行一些计算。为此,我会添加一个CodeActivity作为我工作流程的第一步,它将读取该表并使用数据填充DataTable(将作为工作流的私有字段存储) 。我认为之后我会使用ReplicatorActivity(由MSDN建议作为foreach循环的替代)来迭代数据,它将有另一个CodeActivity来完成所有的计算在行的数据上。问题是ReplicatorActivity只能通过System.Collections.IList进行迭代,但我们知道System.Data.DataTable.Rows属于DataRowCollection类型,它实现了ICollectionIEnumerable到{ {1}},但不是InternalDataCollectionBase

  • 你会建议什么?在这种情况下,我应该使用IList代替WhileActivity,还是使用其他方法?
  • 我应该在一个长期运行ReplicatorActivity
  • 中进行所有计算

1 个答案:

答案 0 :(得分:0)

根据您的描述,单个CodeActivity可以简单地处理业务。查看以下代码并构建如下内容:

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;
    }
}

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