Comment obtenir le numéro de ligne d'un datatable?

je suis en boucle sur chaque ligne dans une table de données:

foreach (DataRow row in dt.Rows) {}

je voudrais obtenir l'index de la ligne courante dans le datatable dt. par exemple:

int index = dt.Rows[current row number]

comment je fais ça?

34
demandé sur Termininja 2010-12-21 22:01:33

8 réponses

int index = dt.Rows.IndexOf(row);

mais vous êtes probablement mieux d'utiliser un pour boucle au lieu d'un foreach.

73
répondu Jamie Ide 2010-12-21 19:05:36

si vous avez besoin de l'index de l'article avec lequel vous travaillez, alors utilisez un foreach boucle est la mauvaise méthode d'itération sur la collection. Changez la façon dont vous bouclez pour avoir l'index:

for(int i = 0; i < dt.Rows.Count; i++)
{
    // your index is in i
    var row = dt.Rows[i];
}
27
répondu Justin Niessner 2010-12-21 19:04:22

Vous avez deux options ici.

  1. vous pouvez créer votre propre compteur d'index et l'incrémenter
  2. Plutôt que d'utiliser une boucle foreach, vous pouvez utiliser une boucle for

la ligne individuelle représente simplement des données, de sorte qu'elle ne saura pas dans quelle ligne elle est située.

4
répondu Mitchel Sellers 2010-12-21 19:04:11

Pourquoi n'essayez-vous pas ce

for(int i=0; i < dt.Rows.Count; i++)
{
  // u can use here the i
}
4
répondu namco 2014-04-01 05:28:14

Vous savez que DataRow est la ligne d'un DataTable correct?

ce que vous avez déjà en boucle à travers chaque ligne. Vous avez juste à garder une trace de combien de lignes il y a afin d'obtenir la ligne courante.

int i = 0;
int index = 0;
foreach (DataRow row in dt.Rows) 
{
index = i;
// do stuff
i++;
} 
2
répondu Security Hound 2010-12-21 19:55:50

Essaie:

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

je pense que c'est le plus court, donc le plus simple.

1
répondu Vakho Akobia 2016-11-19 20:02:35
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);

}
0
répondu user620755 2012-09-28 11:54:44

pour obtenir le nombre de lignes dans un datatable : dt.Rows.Count

0
répondu 2018-01-03 23:57:27