-2

In below Foreach loop

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

How to check if current column is last column ?

sujith karivelil
  • 26,861
  • 6
  • 46
  • 76
Tanwer
  • 1,193
  • 4
  • 20
  • 36

6 Answers6

3

If i Understand you correctly , the thing you looking for is 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
              }
          }
     }

It gives you current position of column item

check this MSDN Link

Saurabh
  • 1,215
  • 17
  • 30
1

You can follow this as well:

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
     }
}

If your requirement is to do something with last column[as mentioned in the question] means need not to go ahead with iteration, you can make use of the column index like this: row[dt.Columns.Count-1]

sujith karivelil
  • 26,861
  • 6
  • 46
  • 76
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
                }
            }
        }
    }
shashi
  • 68
  • 10
0

This should help you

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...
   }
}
lior
  • 500
  • 2
  • 14
-1

Here try this.

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
       }
  }
-1

Use the following peace of code

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=??
   }

}

Koderzzzz
  • 747
  • 7
  • 17