以相反顺序循环数据集

Looping dataset in reverse order

我有一个数据集,其中包含 1 到 'n' 个数据表,我想循环它,但顺序相反,即 from DataTable n to DataTable 1。任何人都可以建议我一种方法来做到这一点。我找到了一些解决方案,但所有解决方案都是为了对数据表而不是数据集进行排序。

DataSet _ds = new DataSet();
foreach (DataTable table in _ds.Tables)
{

}

您可以使用 LINQ,您需要对其进行强制转换,因为 DataTableCollection 没有实现 IEnumerable<DataTable> 而只实现了非通用 IEnumerable 接口:

var reversedTables = _ds.Tables.Cast<DataTable>().Reverse();
foreach(DataTable table in reversedTables)
{
    // ...
}

或使用普通的 for 循环:

for (int i = _ds.Tables.Count - 1; i >= 0; i--)
{
    DataTable table = _ds.Tables[i];
     // ...
}

您可以使用 for-loop 代替:

DataSet _ds = new DataSet();
for (int i=_ds.Tables.Count-1; i>=0; i--)
{
   DataTable table = _ds.Tables[i];
}

或在 数组索引器访问器 :

中递减 i 甚至更简单
DataSet _ds = new DataSet();
for (int i=_ds.Tables.Count-1; i>=0; )
{
   DataTable table = _ds.Tables[i--];
}

或使用 while-loop 做同样的事情:

int i=_ds.Tables.Count;
while (i>=0)
{
    DataTable table = _ds.Tables[i--];
};