如何在 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
实现ICollection
和IEnumerable
,但不能IList
。
- 你有什么建议?在这种情况下,我应该使用
WhileActivity
而不是ReplicatorActivity
,还是其他方法? - 我应该在单个长时间运行的
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;
}
}
根据您的问题描述,上述方法非常简单且可重用。