webentwicklung-frage-antwort-db.com.de

Wie bekomme ich die Zeilennummer von einer Datentabelle?

Ich durchlaufe jede Zeile in einer Datentabelle:

foreach (DataRow row in dt.Rows) {}

Ich möchte den Index der aktuellen Zeile in der dt-Datentabelle erhalten. zum Beispiel:

int index = dt.Rows[current row number]

Wie mache ich das?

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

Es ist jedoch wahrscheinlich besser, eine for-Schleife anstelle von foreach zu verwenden.

80
Jamie Ide

Wenn Sie den Index des Elements benötigen, mit dem Sie arbeiten, ist die Verwendung einer foreach-Schleife die falsche Methode, um die Sammlung zu durchlaufen. Ändern Sie die Art und Weise, in der Sie einen Loop ausführen, sodass Sie den Index haben:

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

Warum versuchst du es nicht? 

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

Sie haben hier zwei Möglichkeiten.

  1. Sie können Ihren eigenen Indexzähler erstellen und inkrementieren
  2. Anstatt eine foreach-Schleife zu verwenden, können Sie eine for-Schleife verwenden

Die einzelne Zeile stellt lediglich Daten dar und weiß daher nicht, in welcher Zeile sie sich befindet.

4
Mitchel Sellers

Sie wissen, dass DataRow die Zeile einer DataTable richtig ist?

Was Sie derzeit bereits durchlaufen, ist jede Zeile. Sie müssen nur nachverfolgen, wie viele Zeilen es gibt, um die aktuelle Zeile zu erhalten.

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

Versuchen:

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

Ich denke es ist der kürzeste, also der einfachste Weg.

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

um die Anzahl der Zeilen in einer Datentabelle zu erhalten: dt.Rows.Count

0
user8346623