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?
8 réponses
int index = dt.Rows.IndexOf(row);
mais vous êtes probablement mieux d'utiliser un pour boucle au lieu d'un foreach.
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];
}
Vous avez deux options ici.
- vous pouvez créer votre propre compteur d'index et l'incrémenter
- 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.
Pourquoi n'essayez-vous pas ce
for(int i=0; i < dt.Rows.Count; i++)
{
// u can use here the i
}
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++;
}
Essaie:
int i = Convert.ToInt32(dt.Rows.Count);
je pense que c'est le plus court, donc le plus simple.
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);
}