获取Foreach循环中的列索引超过datarow

时间:2017-11-02 07:06:14

标签: c#

在下面的Foreach循环中

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

如何检查当前列是否为最后一列?

6 个答案:

答案 0 :(得分:1)

你也可以这样做:

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

如果你的要求是对最后一栏做一些事情[如问题所述]意味着不需要继续进行迭代,你可以使用这样的列索引:row[dt.Columns.Count-1]

答案 1 :(得分:1)

如果我理解你的话,你要找的东西是序数

Declare @year int = 2017, @month int = 11;
WITH numbers
as
(
    Select 1 as value
    UNion ALL
    Select value + 1 from numbers
    where value + 1 <= Day(EOMONTH(datefromparts(@year,@month,1)))
)
SELECT datefromparts(@year,@month,numbers.value) Datum FROM numbers

它为您提供列项目的当前位置

检查此MSDN Link

答案 2 :(得分: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
                }
            }
        }
    }

答案 3 :(得分:0)

这应该可以帮到你

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

答案 4 :(得分:-1)

试试这个。

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

答案 5 :(得分:-1)

使用以下代码安静

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

}