【问题标题】:Looping dataset in reverse order以相反的顺序循环数据集
【发布时间】:2016-05-19 03:21:12
【问题描述】:

我有一个数据集,其中包含 1 到“n”个数据表,我想循环它,但顺序相反,即from DataTable n to DataTable 1。谁能建议我这样做的方法。我找到了一些解决方案,但都是用于排序数据表而不是数据集。

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

}

【问题讨论】:

  • 为什么不简单地使用 for 语句?
  • @CecilioPardo 我不明白我们为什么要寻找复杂的解决方案来解决原本非常简单的问题。一个 for 循环就绰绰有余了。

标签: c# datatable dataset


【解决方案1】:

您可以使用 LINQ,但需要强制转换它,因为 DataTableCollection 没有实现 IEnumerable<DataTable>,而只有非通用的 IEnumerable 接口:

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

或使用普通的for-loop:

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

【讨论】:

    【解决方案2】:

    您可以改用for-loop

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

    【讨论】:

      【解决方案3】:

      或者通过在数组索引器访问器中减少i,甚至更简单:

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

      或使用 while 循环 做同样的事情:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 2020-01-16
        • 2021-12-30
        • 2016-07-25
        相关资源
        最近更新 更多