C # Ошибка бесконечного значения при приведении / не приведении - PullRequest
1 голос
/ 26 января 2012

Думаю, это будет легко, я думаю, что-то упустил.

if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != null))

этот код выдаёт мне ошибку, что при приведении не может быть бесконечного числа.

Я также пробовал:

if (((int)row.Cells["Pareto"].Value <= 50) && ((string)row.Cells["Pareto"].Value != null))
if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != ""))

любая помощь будет отличной!

Я использую winforms в visual studio 10, используя C #.

ошибка: «При приведении числа число должно быть меньше бесконечного» * ​​1013 *

Больше кода, если вы заинтересованы:

foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            //countpg
            //countPg++;
            pgtothold = Convert.ToSingle(row.Cells["Qty"].Value);
            countPg += pgtothold;

            //if (((int)row.Cells["Pareto"].Value <= 50) && (row.Cells["Pareto"].Value != null))
            if ((Convert.ToDouble(row.Cells["Pareto"].Value)) && ((int)row.Cells["Pareto"].Value <= 50)
            {
                //top 50
                //top++;
                tempTop = Convert.ToSingle(row.Cells["Qty"].Value);
                top += tempTop;
            }
            else
                if (((int)row.Cells["Pareto"].Value > 50) && ((int)row.Cells["Pareto"].Value <= 100) && (row.Cells["Pareto"].Value != ""))
                {
                    //50-100
                    tempMidt = Convert.ToSingle(row.Cells["Qty"].Value);
                    tmid += tempMidt;
                }
                else

Ответы [ 3 ]

3 голосов
/ 26 января 2012
if ((row.Cells["Pareto"].Value != null) && ((int)row.Cells["Pareto"].Value <= 50))

Думаю, ты этого хочешь.Если вещь нулевая, она не оценивает остальную часть AND.

1 голос
/ 26 января 2012

Я предлагаю вам использовать:

var data =  System.Convert.ToInt32(row.Cells["Pareto"].Value);
   if( data <=50 )
   {
    ----
   }

, который не будет равен 0, если содержимое DBNull (если это приемлемо), поэтому ваш код будет выглядеть чище и безопаснее.

0 голосов
/ 03 апреля 2013

Результат из таблицы данных, скорее всего, имеет тип decimal. Итак, попробуйте это:

if (((decimal)row.Cells["Pareto"].Value <= 50.0m) && (row.Cells["Pareto"].Value != null))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...