web-dev-qa-db-fra.com

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

Je boucle en boucle à chaque rangée dans un datatable:

foreach (DataRow row in dt.Rows) {}

Je voudrais obtenir l'index de la ligne en cours dans le dt datatable. par exemple:

int index = dt.Rows[current row number]

Comment puis-je faire cela?

39
JOE SKEET
int index = dt.Rows.IndexOf(row);

Mais vous feriez probablement mieux d'utiliser une boucle for au lieu de foreach.

80
Jamie Ide

Si vous avez besoin de l'index de l'élément avec lequel vous travaillez, l'utilisation d'une boucle foreach constitue une méthode incorrecte 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
Justin Niessner

Pourquoi n'essaies-tu pas cela 

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

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, elle ne saura donc pas dans quelle ligne elle se trouve.

4
Mitchel Sellers

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

Ce que vous avez actuellement en boucle à travers chaque ligne. Il vous suffit de suivre le nombre de lignes pour obtenir la ligne actuelle.

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

Essayer:

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

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

1
Vakho Akobia
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
user620755

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

0
user8346623