Как увеличить переменную, если это первая строка таблицы данных - PullRequest
0 голосов
/ 14 сентября 2018

у меня есть таблица данных , имеющая несколько строк. Я хочу увеличить переменную, скажем, i, только если это первая строка таблицы данных. Как я могу это сделать?

 foreach (DataRow row in dt.Rows)
 {  
     address = (row["address"].ToString());
     Counter += 1;
     int count = Convert.ToInt16(Dt.Rows[i]["limit"]);

     //for the first row
     if (Counter == count)
     {
         i += 1;
     }

     // also if it is the last row  
       exit;

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать код, как показано ниже. Используйте IndexOf метод класса DataRowCollection, чтобы определить, является ли это первой строкой. Я создал образец объекта DataTable перед циклом. Основная часть этого ответа - это оператор if в теле цикла, который проверяет индекс строки.

Имейте в виду, что индекс строки в DataTable начинается с 0, а не с 1. Итак, первая строка имеет индекс 0, вторая строка имеет индекс 1, третья строка имеет индекс 2 и т. Д.

    DataTable dt = new DataTable();
    dt.Columns.Add("EmployeeId", typeof(int));
    dt.Columns.Add("FirstName", typeof(string));
    dt.Columns.Add("LastName", typeof(string));
    dt.Columns.Add("Grade", typeof(int));

    // Here we add five DataRows.
    dt.Rows.Add(11, "John", "Smith", 9);
    dt.Rows.Add(92, "Sunita", "Mali", 7);
    dt.Rows.Add(2, "Anil", "Kumar", 4);
    dt.Rows.Add(5, "Mike", "Reb", 11);
    dt.Rows.Add(1, "Sunil", "Dev", 12);

   //your counter variable
    int i= 0;

    foreach(DataRow row in dt.Rows) {
      //use IndexOf method to check if it's the first row
      if( dt.Rows.IndexOf(row) == 0) {
        i++;//only first row causes increment of i
      }

      if(dt.Rows.IndexOf(row) == (dt.Rows.Count -1)) {
       //its the last row of datatable
      }

    }
0 голосов
/ 14 сентября 2018

Почему бы не простой флаг , скажем isFirstRow?

 bool isFirstRow = true;

 foreach (DataRow row in dt.Rows)
 {  
     if (isFirstRow) 
     {
         isFirstRow = false;

         //TODO: Increment here 
     } 
     ... 

Редактировать: В случае последняя строка мы можем выполнить постобработку:

 DataRow lastRow = null;

 foreach (DataRow row in dt.Rows) {
   // Candidate for the last row
   lastRow = row;
   ... 
 }

 if (lastRow != null) {
   //TODO: Put relevant code for the last row     
 }
0 голосов
/ 14 сентября 2018

Вы должны работать с циклом for - это облегчает доступ к индексу

for (int i = 0; i < dt.Rows.Count; i++)
{
    string address = dt.Rows[i].Field<string>("address");
    if (i == 0)
    {
        //first row, increment here
    }
    if (i == dt.Rows.Count - 1)
    {
        //last row
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...