我从数据库中提取结果但是当列中出现空值时,我收到错误 并使用convert.todatetime格式化日期以在页面上的gridview中显示。
var ua = from utilacti in db.utility_activations
where utilacti.ua_case_number == property.property_case_number
select new
{
id = utilacti.ua_id,
Buyer = utilacti.ua_b,
BuyerPhone = utilacti.ua_b_p,
BuyerEmail = utilacti.ua_b_e,
BrokerAgent = utilacti.ua_ba_n,
BAPhone = utilacti.ua_b_p,
BAEmail = utilacti.ua_b_email,
Date = Convert.ToDateTime(utilacti.ua_d).ToShortDateString(),
TonD = Convert.ToDateTime(utilacti.ua_td).ToShortDateString(),
ToffD = Convert.ToDateTime(utilacti.ua_tod).ToShortDateString(),
ApprovalD = Convert.ToDateTime(utilacti.ua_ad).ToShortDateString()
};
我尝试将转换为以下内容以允许可以为空的
Convert.ToDateTime((DateTime?)utilacti.ua_td).ToShortDateString()
但它不起作用。
我试图检查空值。我试图在那里检查一个值,但是它出错了。
任何想法。
答案 0 :(得分:3)
检查null,然后转换为:
Date = utilacti.ua_d == null ? "" : Convert.ToDateTime(utilacti.ua_d).ToShortDateString()
如果utilacti.ua_d
类型为DateTime?
或Nullable<DateTime>
,那么您可以这样做:
Date = utilacti.ua_d.HasValue ? utilacti.ua_d.Value.ToShortDateString() : "" //or null
如果您回来DBNull
,那么您可以使用Convert.IsDbNull
方法,例如:
Date = Convert.IsDBNull(utilacti.ua_d) ? "" : utilacti.ua_d.Value.ToShortDateString()
答案 1 :(得分:0)
感谢Habib,他让我朝另一个方向看。
Get short date for System Nullable datetime (datetime ?) in C#
ApprovalD = string.Format("{0:d}", utilacti.ua_ad)
似乎每次尝试将ToShortDateString()添加到可能的空值时,都会引发错误。无法解析空值。这不是DateTime obj。并尝试使用?:运算符进行检查会中断查询并引发错误。
但是string.Format只是忽略null。它只是有效。