2017-11-02 8 views
-2

In unter Foreach SchleifeHolen Sie sich das Spaltenindex in Foreach Schleife über datarow

foreach (DataRow row in dt.Rows) 
{ 
    foreach (DataColumn col in dt.Columns) 
    { 
     var val=row[col].ToString() 
     var index=?? 
    } 
} 

Wie kann man prüfen, ob aktuelle Spalte letzte Spalte ist?

+0

Verwendung einer for-Schleife oder haben eine ganze Zahl, die Sie erhöhen –

+0

'dt.Columns.IndexOf (col)' – Fabio

+0

Siehe hier gibt: https: //stackoverflow.com/a/521705/365102 –

Antwort

1

Wenn ich Sie richtig verstehe, das, was Sie suchen, ist Ordinal

foreach (DataRow row in dt.Rows) 
    { 
     foreach (DataColumn col in dt.Columns) 
     { 
      var index = col.Ordinal+1; // Current column index 
      if(index == dt.Columns.Count) // if column is last column in current row 
       { 
       your logice goes here 
       } 
      } 
    } 

Es Sie aktuelle Position der Spalte Artikel

Kontrolle dieses MSDN Link

-1

Hier versuchen Sie dies.

foreach (DataRow row in dt.Rows) 
    { 
    var index =0; 
    foreach (DataColumn col in dt.Columns) 
     { 
     var val=row[col].ToString() 

      index++; 
      if(index == dt.Columns.Count) 
      //true 
     } 
    } 
+0

Wie soll das funktionieren? –

+0

aktualisiert, verpasstes Inkrement –

0
public static void DataD() { 
     DataTable table = new DataTable(); 
     table.Columns.Add("Dosage", typeof(int)); 
     table.Columns.Add("Drug", typeof(string)); 
     table.Columns.Add("Patient", typeof(string)); 
     table.Columns.Add("Date", typeof(DateTime)); 

     // Here we add five DataRows. 
     table.Rows.Add(25, "Indocin", "David", DateTime.Now); 
     table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now); 
     table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now); 
     table.Rows.Add(21, "Combivent", "Janet", DateTime.Now); 
     table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now); 
     int count = table.Columns.Count; 
     var lastColumn = table.Columns[count - 1]; 
     string columnname = lastColumn.ColumnName; 
     foreach (DataRow row in table.Rows) 
     { 
      foreach (DataColumn col in table.Columns) 
      { 
       var val = row[col].ToString(); 
       var index = table.Columns.IndexOf(col); 
       if (columnname == col.ColumnName) { 
        // this is my last colums 
       } 
      } 
     } 
    } 
1

Sie können dies auch folgen:

foreach (DataRow row in dt.Rows) 
{   
    for(int i=0; i< dt.Columns.Count; i++) 
    { 
     var val=row[i].ToString() 
     // here i will be the index 
     // dt.Columns[i] will be the column 
    } 
} 

Wenn Ihre Anforderung etwas mit der letzten Spalte zu tun ist [wie in der Frage erwähnten] Mittel müssen nicht im Voraus mit Iteration zu gehen, Sie können den Spaltenindex wie diese machen: row[dt.Columns.Count-1]

-1

den folgenden Frieden von Code verwenden

int total=dt.Columns.Count; 
int i=0; 
foreach (DataRow row in dt.Rows) 
{ 
foreach (DataColumn col in dt.Columns) 
    { 
if(i==total-1) 

{

}

i++; 
    var val=row[col].ToString() 
    var index=?? 
    } 

}

0

Dies sollte Ihnen helfen

var index,val; 
foreach (DataRow row in dt.Rows) 
{ 
foreach (DataColumn col in dt.Columns) 
    { 
     index=dt.Columns.IndexOf(col); 
     val=row[index].ToString(); 

    if (index == dt.Columns.Count-1) 
     //your code here... 
    } 
} 
Verwandte Themen