gani7787 Ответов: 2

C# - как проверить конкретный столбец и его значения


Hi,

I have one datatable. it contains 100 columns.

the problem is i don't want to check all the columns in the table.

I just want to check column from 25 to 50 in sequence.

finally i have the score and that i want to compare in that column (25 to 50) values.

if any score value is matching then we want to return find the  column name.

How to do this using data row.

below is code for sample.

                           

val1	val2	val3	…	…	val25	val26	…	val100
80	100	20	90	20	90	80	40	30




int Score = 80;

 foreach (DataRow row in result)

    {
         // Here i want to check row[25] to row[50]

         
   }

Output : val26 (if it is matching values then return column name)

(val26 is a columnname)


Что я уже пробовал:

foreach (DataRow row in result)

   {
        // Here i want to check row[25] to row[50]


  }

Richard MacCutchan

Просто используйте обычный for петля столбиков от 25 до 50.

2 Ответов

Рейтинг:
19

OriginalGriff

Если вы хотите проверить определенный диапазон, не используйте foreach, используйте for вместо:

foreach (DataRow row in result)
     {
     for (int colIndex = 25; colIndex <= 50; colIndex++)
         {
         Console.WriteLine(row[colIndex]);
         Console.WriteLine(myDataTable.Columns[colIndex].ColumnName);
         }
     }
 }


gani7787

В моей таблице некоторые столбцы имеют нулевые значения.

когда я выполняю, я получаю ошибку

Ошибка: объект не может быть приведен из DBNull в другие типы.

for (int colIndex = 5; colIndex <= 35; colIndex++)
{
double str1 = конвертировать.ToDouble(row[colIndex]); / / ошибка : объект не может быть приведен из DBNull в другие типы.
if (str1 = = Score)/ / compare maxvalue
{
ColName = dt. Columns[colIndex].Имя_столбца;
break; / / если соответствует значению, то получите имя столбца и затем выйдите из цикла
}
}

Как обрабатывать нулевые значения, если столбец и строки имеют нулевые значения...

OriginalGriff

Поэтому проверьте, является ли значение в ячейке DBNull.Значение до того, как вы его бросите...

gani7787

Спасибо. это работает...

OriginalGriff

Пожалуйста!

Рейтинг:
0

Karthik_Mahalingam

пробовать

foreach (DataRow row in dt.Rows)
           {
               for (int i = 25; i <= 50; i++)
               {
                   if (row[25].ToString() == Score.ToString())
                   {
                       string columnName = dt.Columns[i].ColumnName;
                       // your code..
                   }
               }
           }