无法在LINQ表达式中将字符串转换为DateTime

时间:2013-05-02 20:32:01

标签: c# datetime linq-to-xml

我使用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>

0 个答案:

没有答案