在C#中获取列表的子串

时间:2012-11-10 10:37:44

标签: c# string linq

我即将获取列表的子字符串。这是我的LINQ。 (从第三方服务中读取XML。)

 var Payment = from Main in xml.Descendants(ns + "OTA_AirBookRQ")
               select new
               {
                   DepartureDate = Main
                                   .Elements(ns+"Segment")
                                   .Elements(ns+"DepartureDate")
                                   .ToList(),
               }

Payment.DepartureDate[0].Value返回"2012-11-14T19:05:00"的日期。我需要得到的只是"19:05:00"。我如何实现这一目标?

如果您需要更多信息,请与我们联系。

3 个答案:

答案 0 :(得分:3)

DateTime.Parse("2012-11-14T19:05:00").ToString("HH:mm:ss");

答案 1 :(得分:0)

使用DateTime.Parse(dateString)方法执行此操作更有意义,但如果必须使用子字符串,只需转到:string.substring(firstPos, length);(在您的情况下 - 假设您的日期字符串名为strDate:{{1 }}

子字符串:http://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.100).aspx

日期时间解析:http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

答案 2 :(得分:0)

首先,如果您需要的是从整个元素集合中一个值,您可以简化查询:

string paymentDateTimeText = 
        xml
        .Descendants(ns + "OTA_AirBookRQ")
        .Elements(ns+"Segment")
        .Elements(ns+"DepartureDate")
        .First()
        .Value;

也就是说,不需要为转换后的(.ToList())集合创建内存中的副本(.Select(…))。在您的情况下,只需获取.First() XML元素并检索其.Value即可。

  

旁注: .Descendants(…).Elements(…).Elements(…).First()可以简化为.SelectSingleNode(…)方法的单次调用。

最后,@L.B's answer演示了如何从日期时间字符串中提取时间组件,所以让我们在这里做同样的事情:

DateTime paymentTime = DateTime.Parse(paymentDateTimeText).ToString("HH:mm:ss");