愉快地阅读 XML
var q2 = from c in xmlDoc.Descendants("Ticket")
select new
{ Responded_Date = (DateTime)c.Element("Responded_Date") }
但是,当标签是
<Responded_Date xsi:nil="true" />
我得到“字符串未被识别为有效的日期时间”。我不希望使用空合并运算符,而只是将空值插入数据表
愉快地阅读 XML
var q2 = from c in xmlDoc.Descendants("Ticket")
select new
{ Responded_Date = (DateTime)c.Element("Responded_Date") }
但是,当标签是
<Responded_Date xsi:nil="true" />
我得到“字符串未被识别为有效的日期时间”。我不希望使用空合并运算符,而只是将空值插入数据表
将 Responded_Date 声明为可为空的日期时间。
var q2 = from c in xmlDoc.Descendants("Ticket")
select new { Responded_Date = (DateTime?)c.Element("Responded_Date") };
如果<Responded_Date>缺少该元素,将返回一个空值。
如果日期无效,您将收到FormatException -“字符串未被识别为有效日期时间。”。<Responded_Date xsi:nil="true" />将导致 FormatException。
Linq to XML 本身不支持xsi:nil,另请参阅此msdn 社交链接。作为一种解决方法,您必须做的是手动检查,然后为您的日期分配一些默认值(即DateTime.MaxValue)或使用类投影而不是匿名类型并将 null 分配给可为空的 DateTime?财产。
具有匿名类型(Responded_Date类型DateTime:
select new
{
Responded_Date = c.Element("Responded_Date").Value!=""
? (DateTime)c.Element("Responded_Date")
: DateTime.MaxValue
}
使用自定义类投影(Responded_Date类型DateTime?):
select new MyFoo()
{
Responded_Date = c.Element("Responded_Date").Value!=""
? (DateTime)c.Element("Responded_Date")
: null
}