我有从数据库数据生成 xml 的代码。
就这个
public HttpResponseMessage Index(DateTime today)
{
var timeTables = db.TimeTables
.Where(c=> c.Today == today)
.Select(c => new
{
c.INN,
c.StartDay,
c.StartPause,
c.EndPause,
c.EndDay
}).AsEnumerable();
var xdoc = new XDocument(
new XElement("data",
timeTables.Select(w =>
new XElement("worker",
new XAttribute("id", w.INN),
new XElement("start", w.StartDay),
new XElement("pause", w.StartPause),
new XElement("continue", w.EndPause),
new XElement("end", w.EndDay)
)
)
)
);
return new HttpResponseMessage() { Content = new StringContent(xdoc.ToString(), Encoding.UTF8, "application/xml") };
}
数据取自移动应用请求。移动应用程序发送 c.StartDay 例如像这样17-8-2017T10:8:3
。在xml中我需要这样显示yyyy-MM-ddTHH:mm:ss
我如何在 xml 生成上做到这一点?
你应该首先解析你得到的字符串DateTime
:
DateTime.ParseExact(c.StartDay,"d-M-yyyyTH:m:s",
CultureInfo.InvariantCulture)
然后在 xml 中以您喜欢的方式显示它:
.ToString("yyyy-MM-ddTHH:mm:ss")
您可以在选择期间在一个语句中完成所有这些操作:
var timeTables = db.TimeTables
.Where(c=> c.Today == today)
.Select(c => new
{
c.INN,
StartDay = DateTime.ParseExact(c.StartDay,"d-M-yyyyTH:m:s",
CultureInfo.InvariantCulture)
.ToString("yyyy-MM-ddTHH:mm:ss"),
c.StartPause,
c.EndPause,
c.EndDay
}).AsEnumerable();
更新
由于 linq-to-entities 不支持此类方法,因此您可以在以下内容之后使用它XmlElement
:
new XElement("start", DateTime.ParseExact(w.StartDay,"d-M-yyyyTH:m:s",
CultureInfo.InvariantCulture)
.ToString("yyyy-MM-ddTHH:mm:ss")),
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句