从DataView迭代强类型行的更好方法?

时间:2009-06-24 07:22:34

标签: c# ado.net

使用dotnet 2.0。 我目前有这样的代码:

DataView dv = new DataView(dsTrans.Transactions, filterSpec, sortSpec, 
                           DataViewRowState.CurrentRows);

foreach (DataRowView dvr in dv)
{
    DSTransactions.TransactionsRow transRow = (DSTransactions.TransactionsRow)dvr.Row;
    // do something with transRow
}

其中“dsTrans”是强类型数据集。我想知道是否有更类型安全的方法来迭代DataView的行,这不涉及使用强制转换(或使用“as”关键字)。

(请注意,需要进行一些排序和过滤,这就是使用DataView的原因)

感谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

// Only one cast here
Enumerator<DSTransactions.TransactionsRow> enumer = (IEnumerator<DSTransactions.TransactionsRow>)dv.GetEnumerator();
while (enumer.MoveNext())
{
    // enumer.Current will be of type DSTransactions.TransactionsRow
    Console.WriteLine(enumer.Current);
}
enumer.Dispose();