Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算xml c中最后5个日期的平均值_C#_Xml - Fatal编程技术网

C# 计算xml c中最后5个日期的平均值

C# 计算xml c中最后5个日期的平均值,c#,xml,C#,Xml,我有一个xml,它在参数中显示日期/时间和值卷。xml如下所示: <data volume="1" date="Tue, 04 Feb 2014 10:00 am CET"/> <data volume="5" date="Wed, 05 Feb 2014 10:00 am CET"/> <data volume="1" date="Thu, 06 Feb 2014 10:00 am CET"/> <data volume="2" date="Fri,

我有一个xml,它在参数中显示日期/时间和值卷。xml如下所示:

<data volume="1" date="Tue, 04 Feb 2014 10:00 am CET"/>
<data volume="5" date="Wed, 05 Feb 2014 10:00 am CET"/>
<data volume="1" date="Thu, 06 Feb 2014 10:00 am CET"/>
<data volume="2" date="Fri, 07 Feb 2014 12:00 pm CET"/>
<data volume="3" date="Fri, 07 Feb 2014 10:00 am CET"/>
<data volume="4" date="Sat, 08 Feb 2014 12:00 am CET"/>
<data volume="4" date="Sat, 08 Feb 2014 10:00 am CET"/>
<data volume="1" date="Sun, 09 Feb 2014 10:00 am CET"/>

您可以使用LINQtoXML,下面将给您一些开始的想法

var xelement = XElement.Parse(@"<root>
<data volume=""1"" date=""Tue, 04 Feb 2014 10:00 am CET""/>
<data volume=""5"" date=""Wed, 05 Feb 2014 10:00 am CET""/>
<data volume=""1"" date=""Thu, 06 Feb 2014 10:00 am CET""/>
<data volume=""2"" date=""Fri, 07 Feb 2014 12:00 pm CET""/>
<data volume=""3"" date=""Fri, 07 Feb 2014 10:00 am CET""/>
<data volume=""4"" date=""Sat, 08 Feb 2014 12:00 am CET""/>
<data volume=""4"" date=""Sat, 08 Feb 2014 10:00 am CET""/>
<data volume=""1"" date=""Sun, 09 Feb 2014 10:00 am CET""/>
</root>");

var fiveItems = xelement.Elements("data")
.Select(x=> new{Date = DateTime.Parse(x.Attribute("date").Value.TrimEnd("CET".ToCharArray()))
                 ,Volume = int.Parse(x.Attribute("volume").Value)})
.GroupBy(x=>x.Date.Date)
.Select(x=> new{ Date = x.Key, Volume = x.Average(k=>k.Volume)})
.OrderByDescending(x=>x.Date)
.Take(5);
以上将计算5天的平均值。如果您想再次计算这五天的平均值,请执行以下操作

TextBox1.Text = fiveItems.Average(x=>x.Volume);

到目前为止,您尝试了什么?我所做的是获取最后一个节点的属性日期并将其存储在局部变量中。之后我不知道如何获取其他日期我使用读取xml,选择single node并获取date属性DateTime date;日期=Convert.ToDateTimeNode1.Attributes[日期];我使用的是data.xml文件中的数据我想的是,如果同一日期有多个数据,取最高和最低的数据量,计算平均值,那么average将是当天的卷值,我如何在文本框中显示计算出的平均值呢?很抱歉,文本框没有从fiveItems中获取值。Averabex=>x.volume;
var xelement = XElement.Parse(@"<root>
<data volume=""1"" date=""Tue, 04 Feb 2014 10:00 am CET""/>
<data volume=""5"" date=""Wed, 05 Feb 2014 10:00 am CET""/>
<data volume=""1"" date=""Thu, 06 Feb 2014 10:00 am CET""/>
<data volume=""2"" date=""Fri, 07 Feb 2014 12:00 pm CET""/>
<data volume=""3"" date=""Fri, 07 Feb 2014 10:00 am CET""/>
<data volume=""4"" date=""Sat, 08 Feb 2014 12:00 am CET""/>
<data volume=""4"" date=""Sat, 08 Feb 2014 10:00 am CET""/>
<data volume=""1"" date=""Sun, 09 Feb 2014 10:00 am CET""/>
</root>");

var fiveItems = xelement.Elements("data")
.Select(x=> new{Date = DateTime.Parse(x.Attribute("date").Value.TrimEnd("CET".ToCharArray()))
                 ,Volume = int.Parse(x.Attribute("volume").Value)})
.GroupBy(x=>x.Date.Date)
.Select(x=> new{ Date = x.Key, Volume = x.Average(k=>k.Volume)})
.OrderByDescending(x=>x.Date)
.Take(5);
XDocument doc = XDocument.Load("data.xml");
var fiveItems = doc.Elements("data")
.Select(x=> new{Date = DateTime.Parse(x.Attribute("date").Value.TrimEnd("CET".ToCharArray()))
                 ,Volume = int.Parse(x.Attribute("volume").Value)})
.GroupBy(x=>x.Date.Date)
.Select(x=> new{ Date = x.Key, Volume = x.Average(k=>k.Volume)})
.OrderByDescending(x=>x.Date)
.Take(5);
TextBox1.Text = fiveItems.Average(x=>x.Volume);