【问题标题】:How to get the row number from a datatable?如何从数据表中获取行号?
【发布时间】:2011-05-29 00:35:00
【问题描述】:

我正在遍历数据表中的每一行:

foreach (DataRow row in dt.Rows) {}

我想获取 dt 数据表中当前行的索引。例如:

int index = dt.Rows[current row number]

我该怎么做?

【问题讨论】:

  • 告诉我们您正在使用哪个数据库,获取的行号会有所不同。例如,在 Oracle 中,您选择 rownum

标签: c# datatable


【解决方案1】:
int index = dt.Rows.IndexOf(row);

但你可能最好使用 for 循环而不是 foreach。

【讨论】:

  • 此代码将强制搜索 DataTable 中每一行的内部红黑树,而简单的 for 循环则不需要任何开销(因为您前面有索引)。
  • 使用 for 循环当然是更好的选择,但这不是问题。
【解决方案2】:

如果您需要正在处理的项目的索引,那么使用foreach 循环是迭代集合的错误方法。改变你循环的方式,这样你就有了索引:

for(int i = 0; i < dt.Rows.Count; i++)
{
    // your index is in i
    var row = dt.Rows[i];
}

【讨论】:

    【解决方案3】:

    这里有两种选择。

    1. 您可以创建自己的索引计数器并递增它
    2. 您可以使用 for 循环,而不是使用 foreach 循环

    单个行只是代表数据,所以它不会知道它位于哪一行。

    【讨论】:

      【解决方案4】:

      你为什么不试试这个

      for(int i=0; i < dt.Rows.Count; i++)
      {
        // u can use here the i
      }
      

      【讨论】:

        【解决方案5】:

        您知道 DataRow 是 DataTable 的行,对吗?

        您当前已经遍历每一行的内容。您只需要跟踪有多少行才能获取当前行。

        int i = 0;
        int index = 0;
        foreach (DataRow row in dt.Rows) 
        {
        index = i;
        // do stuff
        i++;
        } 
        

        【讨论】:

        • 这个答案很难解读,特别是鉴于当前的问题。他只是问如何获取当前行的索引。他在第 1 行、第 2 行等吗?
        • 你原来的答案和这个不一样,完全没打中。如果没有,您将不会完全替换它。至于提供我自己的答案,这是不必要的。贾斯汀已经提供了我会给出的答案。*
        【解决方案6】:
        ArrayList check = new ArrayList();            
        
        for (int i = 0; i < oDS.Tables[0].Rows.Count; i++)
        {
            int iValue = Convert.ToInt32(oDS.Tables[0].Rows[i][3].ToString());
            check.Add(iValue);
        
        }
        

        【讨论】:

          【解决方案7】:

          试试:

          int i = Convert.ToInt32(dt.Rows.Count);
          

          我认为这是最短的,因此也是最简单的方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-27
            • 2018-11-25
            • 1970-01-01
            • 1970-01-01
            • 2020-03-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多