Как получить номер строки из таблицы данных? - PullRequest
43 голосов
/ 21 декабря 2010

Я перебираю каждую строку в таблице данных:

foreach (DataRow row in dt.Rows) {}

Я хотел бы получить индекс текущей строки в таблице данных dt.например:

int index = dt.Rows[current row number]

Как мне это сделать?

Ответы [ 7 ]

83 голосов
/ 21 декабря 2010
int index = dt.Rows.IndexOf(row);

Но вам, вероятно, лучше использовать цикл for вместо foreach.

28 голосов
/ 21 декабря 2010

Если вам нужен индекс элемента, с которым вы работаете, то использование цикла foreach является неправильным методом итерации по коллекции. Измените способ зацикливания, чтобы у вас был индекс:

for(int i = 0; i < dt.Rows.Count; i++)
{
    // your index is in i
    var row = dt.Rows[i];
}
5 голосов
/ 29 мая 2012

Почему бы вам не попробовать это

for(int i=0; i < dt.Rows.Count; i++)
{
  // u can use here the i
}
4 голосов
/ 21 декабря 2010

Здесь у вас есть две опции.

  1. Вы можете создать свой собственный счетчик индекса и увеличить его
  2. Вместо использования цикла foreach, вы можете использовать цикл for

Отдельная строка просто представляет данные, поэтому она не будет знать, в какой строке она находится.

3 голосов
/ 21 декабря 2010

Вы знаете, что DataRow является строкой DataTable , правильной?

То, что у вас уже есть, проходит по каждой строке. Вам просто нужно следить за количеством строк, чтобы получить текущий ряд.

int i = 0;
int index = 0;
foreach (DataRow row in dt.Rows) 
{
index = i;
// do stuff
i++;
} 
0 голосов
/ 19 ноября 2016

Попробуйте:

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

Я думаю, что это самый короткий и, следовательно, самый простой способ.

0 голосов
/ 29 августа 2012
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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...