COMPARAR CAMPO BANCO COM NULL

LUIS.HERRERA 10/05/2013 13:48:10
#423285
Nossa pesquisei em tudo que é link do google e não consigo resolver.

Carrego um DataReader sendo que um dos campos (Valor) é Tinyint na tabela e byte na entidade.
Antes de colocar esse valor na propriedade da minha entidade, tenho de testar se ele é nulo para incluir 0 ou o valor se existir, mas dá erro de todas as formas que tentei.

myAtitude.Valor= Convert.ToByte(dr[[Ô]Valor[Ô]] == DBNull.Value ? 0 : dr[[Ô]Valor[Ô]]);

ou

myAtitude.Valor= Convert.ToByte(dr[[Ô]Valor[Ô]] == null ? 0 : dr[[Ô]Valor[Ô]]);

ou

myAtitude.Valor= Convert.ToByte(Convert.IsDbNull(dr[[Ô]Valor[Ô]]) ? 0 : dr[[Ô]Valor[Ô]]);
KERPLUNK 10/05/2013 13:51:06
#423286
Veja bem o que o erro diz, mas é quase certo que você está esquecendo um cast aí...

myAtitude.Valor= Convert.ToByte(dr[[Ô]Valor[Ô]] == DBNull.Value ? 0 : Convert.ToXXX(dr[[Ô]Valor[Ô]]));
LUIS.HERRERA 10/05/2013 15:29:13
#423299
o Erro é : [Ô]Não é possível converter um objeto do tipo [Ô]System.DBNull em System.String. e ocorre da forma que sugeriu também, pois o erro está na comparação e não na associação.

Bem fiz mais testes e consegui resolver, achei meio esquisito a forma mas é como funcionou.

myAtitude.Valor= Convert.ToByte(dr[[Ô]Valor[Ô]].ToString() == string.Empty ? 0 : dr[[Ô]Valor[Ô]]);

ou seja, inclui na comparação
.ToString() == string.Empty

Tópico encerrado , respostas não são mais permitidas