Boopalslm Ответов: 2

Указанное приведение недопустимо C#


Я создаю приложение windows с помощью datagridview, я получаю ошибку от времени вычисления значений ячеек.

meters += Convert.ToDecimal(dataGridView1.Rows[i].Cells[1].Value == DBNull.Value ||
                   (Decimal)this.dataGridView1.CurrentRow.Cells[1].Value == 0);



Указанное приведение недопустимо C#

Как решить вышеприведенную ошибку, любой из них даст мне несколько идей.

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

Указанное приведение недопустимо C#

[no name]

Я серьезно сомневаюсь, что у вас есть значение DBNull в вашей таблице данных.

ChrisHD22

Вы бросаете логическое значение, вот почему вы получаете недопустимое приведение. Вы не можете преобразовать bool в десятичную дробь.

2 Ответов

Рейтинг:
1

Dave Kreskowiak

Ваш код вообще не имеет смысла.

Вы пытаетесь преобразовать выражение bool (значение true/false) в десятичное:

(Decimal)this.dataGridView1.CurrentRow.Cells[1].Value == 0);

Вам также не нужно "это" там вообще.

Тогда ты и написала, что с другим логическое выражение:
dataGridView1.Rows[i].Cells[1].Value == DBNull.Value


А затем вы пытаетесь преобразовать результат в десятичную дробь, что не сработает.

Вам придется объяснить, что вы хотите, чтобы этот код делал. То, что вы опубликовали, настолько запутано, что невозможно понять, что вы пытаетесь сделать.


Рейтинг:
0

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Похоже, что значение внутри ToDecimal будет оцениваться как логическое. Поправьте меня, если я ошибаюсь.

Итак, проблема вот в чем. Убедитесь, что вы делаете хорошую конверсию.