用
快乐阅读XMLvar q2 = from c in xmlDoc.Descendants("Ticket")
select new
{ Responded_Date = (DateTime)c.Element("Responded_Date") }
但是当标签是
时<Responded_Date xsi:nil="true" />
我得到“字符串未被识别为有效的DateTime”。我不希望使用null合并运算符,只是将null和insert插入datatable
答案 0 :(得分:1)
将Responded_Date声明为可以为空的日期时间。
var q2 = from c in xmlDoc.Descendants("Ticket")
select new { Responded_Date = (DateTime?)c.Element("Responded_Date") };
如果缺少<Responded_Date>
元素,则返回空值。
如果它是无效日期,您将获得 FormatException - “字符串未被识别为有效的DateTime。”。 <Responded_Date xsi:nil="true" />
将导致FormatException。
答案 1 :(得分:0)
Linq to XML本身不支持xsi:nil
,另见msdn social link。作为一种解决方法,您需要做的是手动检查,然后为您的日期指定一些默认值(即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
}