Я использую linq для xml для извлечения списка данных станции из xmlstring xmlData. XMLDATA выглядит следующим образом:как запросить xml с предложением where?
<Observations>
<Observation>
<Station>ADELONG POST OFFICE</Station>
<DateTime>2010-09-02T00:00:00</DateTime>
<Temperature>19.212989033764689</Temperature>
</Observation>
<Observation>
<Station>ADELONG POST OFFICE</Station>
<DateTime>2010-09-01T00:00:00</DateTime>
<Temperature>28.529448969536205</Temperature>
</Observation>
<Observation>
<Station>ALBURY AIRPORT</Station>
<DateTime>2010-09-01T00:00:00</DateTime>
<Temperature>34.687027630716109</Temperature>
</Observation>
<Observation>
<Station>ALBURY AIRPORT AWS</Station>
<DateTime>2010-09-01T00:00:00</DateTime>
<Temperature>28.131385570453197</Temperature>
</Observation>
</Observations>
Я пытаюсь запросить эту xmlstring, чтобы извлечь имя станции только самой последней даты-времени. Я также хотел бы получить самую последнюю температуру.
Я определил класс станции:
public class Station
{
public string Name { get; set; }
public DateTime MostRecentDate { get; set; }
public decimal LastTemperature { get; set; }
}
Как я могу перечислить самые последние температуры + DATETIME + имя для каждой станции?
Я бег это в переменном приложении # консольных (полный код):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
namespace weatherxml
{
class Program
{
static void Main(string[] args)
{
string xmlData = @"<Observations><Observation><Station>ADELONG POST OFFICE</Station><DateTime>2010-09-02T00:00:00</DateTime><Temperature>19.212989033764689</Temperature></Observation><Observation><Station>ADELONG POST OFFICE</Station><DateTime>2010-09-01T00:00:00</DateTime><Temperature>28.529448969536205</Temperature></Observation><Observation><Station>ALBURY AIRPORT</Station><DateTime>2010-09-01T00:00:00</DateTime><Temperature>34.687027630716109</Temperature></Observation><Observation><Station>ALBURY AIRPORT AWS</Station><DateTime>2010-09-01T00:00:00</DateTime><Temperature>28.131385570453197</Temperature></Observation></Observations>";
XDocument weatherData = XDocument.Parse(xmlData);
var stations = from item in weatherData.Descendants("Observation")
select new Station
{
Name = item.Element("Station").Value,
MostRecentDate = DateTime.Parse(item.Element("DateTime").Value),
LastTemperature = Decimal.Parse(item.Element("Temperature").Value)
};
var st = stations;
foreach (var s in st)
{
Console.WriteLine(s.Name);
}
Console.ReadLine();
}
}
public class Station
{
public string Name { get; set; }
public DateTime MostRecentDate { get; set; }
public decimal LastTemperature { get; set; }
}
}