HI
我有一个看起来像
的示例文档<ItemEntry>
<PurchaseDate>2010-03-18T20:36:32.81108+13:00</PurchaseDate>
<StoreGUID>0a0324ad-5f99-486a-a2d0-870bc6991e9f</StoreGUID>
<ExpiryDate />
<CardID>111111</CardID>
<PurchaseAmount>0</PurchaseAmount>
<RedeemedAmount />
<EntryType>1</EntryType>
<RedeemedDate />
<SalesAssistantID>0</SalesAssistantID>
</ItemEntry>
正如您所看到的,有几个元素ExpiryDate和RedeemedDate都是空的。
var q = from c in xml.Elements("ItemEntry")
select new mdDetail {
PurchaseDate = (DateTime)c.Element("PurchaseDate"),
StoreGUID = (Guid)c.Element("StoreGUID"),
ExpiryDate = (DateTime?)c.Element("ExpiryDate")??DateTime.MinValue,
CardID = (int)c.Element("CardID"),
PurchaseAmount = (double)c.Element("PurchaseAmount"),
RedeemedAmount = (double?)c.Element("RedeemedAmount"),
EntryType = (int)c.Element("EntryType"),
RedeemedDate = (DateTime?)c.Element("RedeemedDate") ??DateTime.MinValue,
SalesAssistantID = (int)c.Element("SalesAssistantID"),
}
;
foreach (var item in q)
{
}
我不知道如何处理null元素值, 我试过?? DateTime.MinValue和?? null然而两个都给了我一个“ 字符串未被识别为有效的DateTime。“错误。
有什么建议吗?
谢谢
答案 0 :(得分:4)
ExpiryDate = String.IsNullOrEmpty((string)c.Element("ExpiryDate"))?
DateTime.MinValue : DateTime.Parse((string)c.Element("ExpiryDate"))
答案 1 :(得分:1)
“如果ExpireyDate是,你也可以使用null而不是DateTime.MinValue 声明可以为空的“
@Gabe,你不能只使用null
- 你需要使用(DateTime?)null
因为编译器不知道如何将null
转换为DateTime
个对象
因此,如果您希望该值只是一个空白(null),那么这将是最终代码:
ExpiryDate = String.IsNullOrEmpty(c.Element("ExpiryDate").Value)?
(DateTime?)null : DateTime.Parse(c.Element("ExpiryDate").Value)
假设DateTime
被声明为可空(DateTime?
)