object类型怎么转换成 时间类型和double类型?

bianjijianjie 2010-04-23 09:04:55

while(sdr.Read())
{
//无法确定条件表达式的类型,因为“string”和“System.DateTime”之间没有隐式转换
p.BuyTime = sdr["BuyTime"] == DBNull.Value ? "0" :DateTime.Parse( sdr["BuyTime"]);

//无法确定条件表达式的类型,因为“string”和“double”之间没有隐式转换 E:\xindouWeb\xindouWeb\xindouWeb.DAL\ProInfoServer.cs 85 57 xindouWeb.DAL
p.Price =sdr["Price"]==DBNull.Value?"0": Convert.ToDouble(sdr["Price"]);

//无法从“object”转换为“string”
p.Rebate =sdr["Rebate"]==DBNull.Value?"1":Double.Parse(sdr["Rebate"]) * p.Price;
}


在model层 我分别定义的类型为
DateTime BuyTime
double Price
double Rebate

怎么解决上面的错误啊?
...全文
967 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿双2009 2010-04-23
  • 打赏
  • 举报
回复
看了13楼的解析,我这样测试了下:

DateTime? dt = (1 == 1) ? null : DateTime.Now;


出现错误提示:
无法确定条件表达式的类型,因为"<null>"和"System.DateTime"之间没有隐式转换
阿双2009 2010-04-23
  • 打赏
  • 举报
回复
关注。。
xray2005 2010-04-23
  • 打赏
  • 举报
回复
把BuyTime改为 DateTime? BuyTime

然后:

while(sdr.Read())
{

p.BuyTime = sdr["BuyTime"] == DBNull.Value ? null :Convert.ToDateTime(sdr["BuyTime"]);


p.Price =sdr["Price"]==DBNull.Value? 0 : Convert.ToDouble(sdr["Price"]);

p.Rebate =sdr["Rebate"]==DBNull.Value?"1":(Double.Parse(sdr["Rebate"]) * p.Price).ToString();
}
telankes2000 2010-04-23
  • 打赏
  • 举报
回复
建議 BuyTime 在數據庫進行轉換比較好
取出來就是字符串 直接賦值 不用再轉換了
convert(char(10),BuyTime,111) as BuyTime // 2010/04/23
wuyq11 2010-04-23
  • 打赏
  • 举报
回复
DateTime? BuyTime
bianjijianjie 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 elf512 的回复:]
在model层 我分别定义的类型为
DateTime BuyTime
double Price
double Rebate

这些定义成可空类型不就解决问题了
[/Quote]

怎么定义成可空类型?
elf512 2010-04-23
  • 打赏
  • 举报
回复
在model层 我分别定义的类型为
DateTime BuyTime
double Price
double Rebate

这些定义成可空类型不就解决问题了
bianjijianjie 2010-04-23
  • 打赏
  • 举报
回复
楼上的,改成null不行,报同样的错误 ,不能转换
bianjijianjie 2010-04-23
  • 打赏
  • 举报
回复
楼上的,改成null不行,报同样的错误 ,不能转换
bianjijianjie 2010-04-23
  • 打赏
  • 举报
回复
楼上的,改成null不行,报同样的错误 ,不能转换
huangwenquan123 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 imsasuke 的回复:]
p.BuyTime = sdr["BuyTime"] == DBNull.Value ? DateTime.Now :Convert.ToDateTime(sdr["BuyTime"]);或?可空类型null
但是时间如果为空的话我就应该要让他为空 不能给他赋当前时间。
怎么解决?
[/Quote]不给他赋值话就改成
p.BuyTime = sdr["BuyTime"] == DBNull.Value ? null :DateTime.Parse( sdr["BuyTime"]);
bianjijianjie 2010-04-23
  • 打赏
  • 举报
回复
p.BuyTime = sdr["BuyTime"] == DBNull.Value ? DateTime.Now :Convert.ToDateTime(sdr["BuyTime"]);或?可空类型null
但是时间如果为空的话我就应该要让他为空 不能给他赋当前时间。
怎么解决?
wuyq11 2010-04-23
  • 打赏
  • 举报
回复
p.BuyTime = sdr["BuyTime"] == DBNull.Value ? DateTime.Now :Convert.ToDateTime(sdr["BuyTime"]);或?可空类型null
p.Price =sdr["Price"]==DBNull.Value?0: Convert.ToDouble(sdr["Price"]);

p.Rebate =sdr["Rebate"]==DBNull.Value?1:Double.Parse(sdr["Rebate"]) * p.Price;
lovehong123 2010-04-23
  • 打赏
  • 举报
回复
热烈欢迎.NET程序员加入108860028群,我们共同进步,追逐各自的梦想!
lovehong123 2010-04-23
  • 打赏
  • 举报
回复
热烈欢迎.NET程序员加入108860028群,我们共同进步,追逐各自的梦想!

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧