【发布时间】:2011-09-11 06:30:26
【问题描述】:
我在选择查询中使用 case 语句,类似这样。
Select col1, col2, isActive = case when col3 = 'abc' then 1 else 0 end, col4
from <tablename> where <some condition>.
当我在 ado.net 中读取“isActive”列值时 -
bool isActiveFlag = (bool)datareader["isActive"];
我得到类型转换错误。因为它以 int 形式返回值。
如果我将查询更改为
Select col1, col2, isActive = case when col3 = 'abc' then 'true' else 'false' end, col4
from <tablename> where <some condition>.
我得到相同的类型转换错误,因为这次返回的值是字符串。基本上我希望查询在查询中将布尔值分配给“isActive”,以便我可以将其读取为布尔值。
bool isActiveFlag = (bool)datareader["isActive"];
知道如何处理吗?
我不想将值读取为 int 或 string,然后将值转换为布尔值。
【问题讨论】:
-
您是否尝试过使用 Convert.ToBoolean 而不是显式转换?
-
@Waqas 是的,我可以将值读取为字符串并执行 Convert.ToBooleam。它对我有用。但我想将该值读取为布尔值而不是进行布尔转换。