探索WWF我遇到了处理DataTable
的困难。假设我有一个表,我想根据该表中每一行的数据进行一些计算。为此,我会添加一个CodeActivity
作为我工作流程的第一步,它将读取该表并使用数据填充DataTable
(将作为工作流的私有字段存储) 。我认为之后我会使用ReplicatorActivity
(由MSDN建议作为foreach循环的替代)来迭代数据,它将有另一个CodeActivity
来完成所有的计算在行的数据上。问题是ReplicatorActivity
只能通过System.Collections.IList
进行迭代,但我们知道System.Data.DataTable.Rows
属于DataRowCollection
类型,它实现了ICollection
和IEnumerable
到{ {1}},但不是InternalDataCollectionBase
。
IList
代替WhileActivity
,还是使用其他方法?ReplicatorActivity
?答案 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;
}
}
根据您的问题描述,上述方法非常简单且可重复使用。