【问题标题】:How to set date/datetime format in this xml file?如何在这个 xml 文件中设置日期/日期时间格式?
【发布时间】:2019-05-20 09:45:10
【问题描述】:

我在 LINQ 语句中使用下面的 xml 文件,其中我将“Startdate”和“EndDate”与 DateTime 值匹配。并因为“字符串”和“日期时间”比较而出错。 xml里面应该怎么修改呢?

<?xml version="1.0" encoding="utf-8" ?>
<IndiaLoanProduct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Program>
<ProgramID>6</ProgramID>
<Name>Primary Loan</Name>
<InterestRate>0.23</InterestRate>
<StartDate>2018-12-20</StartDate>
<EndDate>2019-03-31</EndDate>
</Program>

<Program>
<ProgramID>6</ProgramID>
<Name>Primary Loan</Name>
<InterestRate>0.25</InterestRate>
<StartDate>2019-04-1</StartDate>
<EndDate>2099-12-31</EndDate>
</Program>
</IndiaLoanProduct>

出错的代码:-

XDocument doc = XDocument.Load(Server.MapPath("/Resources/India_LoanProduct.xml"));

var ns = doc.Root.GetDefaultNamespace();

var result = (from program1 in doc.Descendants(ns + "Program")
              where Convert.ToInt32(program1.Element(ns + "ProgramID").Value) == programName.Id 
                 && (Comparedate < (DateTime)(program1.Element(ns + "EndDate")).Value) 
              select program1).FirstOrDefault();

【问题讨论】:

  • 能否也提供Linq语句和错误信息?
  • 实际代码和错误是什么?您发布的错误抱怨比较不同的类型,而不是解析日期格式。更改字符串不会使反序列化代码突然使用日期字段或变量

标签: c# asp.net xml linq


【解决方案1】:

更新基于 OP 的代码

您需要使用 DateTime.Parse 解析元素值。

var result = (from program1 in doc.Descendants(ns + "Program")
              where Convert.ToInt32(program1.Element(ns + "ProgramID").Value) == programName.Id 
                  && (Comparedate < (DateTime.Parse(program1.Element(ns + "EndDate").Value))) 
                  select program1).FirstOrDefault();

【讨论】:

  • 谢谢,但显示错误->“无法转换为“字符串”和“System.Date.Time”
  • 这假设 OP 能够将 XML 值反序列化为 Date 并将其与字符串进行比较。在这种情况下不需要演员表。如果有的话,应该将 string 解析为 DateTime
  • @BlackCat 这意味着您的代码中存在错误,您尚未发布。贴出反序列化和对比代码
猜你喜欢
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多