【发布时间】:2014-01-28 21:19:02
【问题描述】:
我正在从数据库中提取结果,但是当列中有空值时,我收到错误 并使用 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()
但它不起作用。
我尝试检查空值。我试图在那里做一个 if 来检查一个值,但它出错了。
任何想法。
【问题讨论】:
-
尝试使用 DBNull.Value.Equals(utilacti.ua_td) 或任何你的列名
-
意外类型代码:DBNull...不行
-
我只是认为这是对
var和匿名类的滥用...如果您没有为 15 个不同的字段(其中一些是派生的)编写select,那么您从一开始就不会遇到这些问题。 -
只是为了让你知道我添加了一个类来保存变量。不幸的是,这不是问题。它在于尝试将空值转换为日期时间。这总是会引发错误。一个简单的 string.Format 解决了一切。而且这与滥用 var 和匿名类没有任何关系。