我使用LINQ to XML表达式将一些XML数据反序列化为对象列表。我的对象只是一个集合字段:
public class DataObject
{
private string Name { get; set; }
private DateTime Date { get; set; }
}
这是LINQ查询:
XDocument linqXml = XDocument.Parse(dataToDeserialize.OuterXml)
List<DataObject> MyObjects = (from object in linqXml.Descendants("object")
select new DataObject
{
Name = object.Element("Name").Value,
Date = Convert.ToDateTime(object.Element("Date").Value)
}
当我运行它时,LINQ查询抛出FormatException:“字符串未被识别为有效的DateTime。”
XML中的日期字符串格式为UTC:2013-05-02T11:25:35-06:00
要测试我尝试转换日期时间并正确返回DateTime对象。
DateTime dt = Convert.ToDateTime("2013-05-02T11:25:35-06:00");
字符串正确转换为新的DateTime对象。如果我将对象上的日期字段切换为字符串类型,然后在另一个方法中将其转换,则会转换。当LINQ查询的一部分时,它似乎无法工作。
我很难过这个。我也尝试过使用DateTime.Parse(string),但是会抛出相同的异常。有没有办法在查询中进行此转换,或者在创建对象后是否必须转换字段?
编辑添加:
示例XML: 每个标记中的属性都是由我查询以获取此数据的事务引擎生成的。我在调试时提取了XML文本,并且在Date标记之间似乎没有额外的空格。
<Object>
<Name __genericType="String" __specificType="[String]" __nodeType="DataField">HelloThere</Name>
<Date __genericType="Timestamp" __specificType="[TimeStamp]" __nodeType="DataField">2013-05-12T11:08:04-06:00</Date>
</Object>