gpt4 book ai didi

c# - 尝试从 DataGridView 计算 xml 值

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:10 24 4
gpt4 key购买 nike

我已根据 MS 演练成功创建了一个 DataGridView,用于将 xml 读入 DataGridView。

https://msdn.microsoft.com/en-us/library/ekw4dh3f.aspx

我现在尝试根据 xml 条目的日期对信息进行排序,以计算 xml 文件中存在的总刻度。 XML 示例:

<?xml version="1.0" encoding="utf-8"?>
<Form1>
<Name Key="4/13/2015 6:31:26 AM">
<Date>4/13/2015</Date>
<JobNum>00000</JobNum>
<RevNum>00000</RevNum>
<Task>TimeStar</Task>
<Start>06:31 AM</Start>
<End>06:35 AM</End>
<TotalTime>2163346393</TotalTime>
</Name>
<Name Key="4/13/2015 6:35:11 AM">
<Date>4/13/2015</Date>
<JobNum>27163</JobNum>
<RevNum>00000</RevNum>
<Task>Redlines</Task>
<Start>06:35 AM</Start>
<End>07:35 AM</End>
<TotalTime>36229156954</TotalTime>
</Name>
//etc.
</Form1>

基本上我一直在尝试收集所有 <Date>仅字段/行,然后计算 <TotalTime>对于那些行。我尝试从 XML 中执行此操作以基于唯一日期字段动态创建标签,然后计算我们在该行中的任何 TotalTime 字段。

Get the positions of unique elements in a string[]

有人告诉我使用 DataGridView 更容易,但我相信事实并非如此。谁能给我指出正确的方向,告诉我如何对这个问题或上一个问题进行排序或过滤。我不明白。我真的不想为我写的答案。我只是无法理解它。

在我看来结构应该是这样的:

foreach(filter date)
{
uniqueDate = true;
new Label == CreateLabel();

foreach(date = array[x])
{
if (date = array[x])
{
sum = TotalTime[x];
}
}
}

谁能帮我解决这个结构。看起来代码应该适用于 DataGridView 或直接读取 XML。

非常感谢您能为我提供的任何帮助。我真的很感激 :-)

编辑:这是我得到 XMLException 未处理的地方 - 根级别的数据无效。代码是根据 Cedric 的回答修改的。

public string sum2()
{
var document = XDocument.Parse(filePath);

double getit = 0;

foreach (var dates in document.Root.Elements("Name").GroupBy(i => i.Element("Date").Value))
{
double summ = 0;
foreach (var date in dates)
{
summ += Convert.ToDouble(date.Element("TotalTime").Value);
}

Console.WriteLine("Date {0} = {1}", dates.Key, summ);

getit = summ;
}

double retunthis = getit;

return retunthis.ToString();


}

我在点击按钮时用 sum2(); 调用它希望先在控制台中看到它的运行情况。当前未使用任何返回的代码。

最佳答案

如果我的理解是好的。

这是我的:

var xml = "<Form1><Name Key='4/13/2015 6:31:26 AM'><Date>4/13/2015</Date><JobNum>00000</JobNum><RevNum>00000</RevNum><Task>TimeStar</Task><Start>06:31 AM</Start><End>06:35 AM</End><TotalTime>2163346393</TotalTime></Name><Name Key='4/13/2015 6:35:11 AM'><Date>4/13/2015</Date><JobNum>27163</JobNum><RevNum>00000</RevNum><Task>Redlines</Task><Start>06:35 AM</Start><End>07:35 AM</End><TotalTime>36229156954</TotalTime></Name><Name Key='4/13/2015 6:35:11 AM'><Date>6/13/2015</Date><JobNum>27163</JobNum><RevNum>00000</RevNum><Task>Redlines</Task><Start>06:35 AM</Start><End>07:35 AM</End><TotalTime>36229156954</TotalTime></Name></Form1>";
var document = XDocument.Parse(xml);

foreach (var dates in document.Root.Elements("Name").GroupBy(i => i.Element("Date").Value))
{
double summ = 0;
foreach (var date in dates)
{
summ += Convert.ToDouble(date.Element("TotalTime").Value);
}

Console.WriteLine ("Date {0} = {1}", dates.Key, summ);
}

输出:

Date 4/13/2015 = 38392503347
Date 6/13/2015 = 36229156954

请注意,我将日期 6/13/2015 添加到您的 xml 中以具有 2 个不同的日期

XML:

<Form1>
<Name Key="4/13/2015 6:31:26 AM">
<Date>4/13/2015</Date>
<JobNum>00000</JobNum>
<RevNum>00000</RevNum>
<Task>TimeStar</Task>
<Start>06:31 AM</Start>
<End>06:35 AM</End>
<TotalTime>2163346393</TotalTime>
</Name>
<Name Key="4/13/2015 6:35:11 AM">
<Date>4/13/2015</Date>
<JobNum>27163</JobNum>
<RevNum>00000</RevNum>
<Task>Redlines</Task>
<Start>06:35 AM</Start>
<End>07:35 AM</End>
<TotalTime>36229156954</TotalTime>
</Name>
<Name Key="6/13/2015 6:35:11 AM">
<Date>6/13/2015</Date>
<JobNum>27163</JobNum>
<RevNum>00000</RevNum>
<Task>Redlines</Task>
<Start>06:35 AM</Start>
<End>07:35 AM</End>
<TotalTime>36229156954</TotalTime>
</Name>
</Form1>

关于c# - 尝试从 DataGridView 计算 xml 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com