计算按jobNum过滤的小时数

时间:2014-11-26 12:47:37

标签: c# xml arrays

我从xml文件创建string[] array,该文件列出了分配给计时应用程序的每个作业编号。我可以从xml文件中成功返回string []。我试图将阵列的时间与作业数量的阵列位置匹配,并且我遇到了困难。我希望有人能够帮助和/或指导NEWB获取已经显示在某处的好信息。

这是我到目前为止所拥有的。我似乎无法将它们缝合在一起。获取作业编号的最大出现次数。

    public static string totalHoursbyJob()
    {
        int count = 0;

        if (jobNum.Length > count)
        {
            var items = jobNum.Distinct();
            count = items.Count();
            foreach (string value in items)
            {
                string[,] itemArr = new string[count, Convert.ToInt32(jobNum)]; 
            }
        }
    }

这将获取时间组件并计算值,但不会按作业编号进行过滤。它可以准确计算xml文件中.innerText节点中的值。

        for (i = 0; i < ticks.Length; i++)
        {
            ticksInt = double.Parse(ticks[i]);

            if (ticksInt > 1)
            {
                double small = ((((ticksInt / 10000) / 1000) / 60) / 60);

                sum2 += small;
            }
        }

有人可以指点我在这里做错了什么吗?先感谢您。我真的很感谢你停下来寻找和帮助。 :-D有一个美好的一天

EDIT1清除错误!!耶

EDIT2 谢谢user910683。我删除了目前无效的代码,并修改了创建比较数组的代码。请看下一步。

        if (jobNum.Length > count)
        {
            string[] items = jobNum.Distinct().ToArray();//This change made to clear 
                                                         //error at items.length below

            count = items.Count();
            //itemArr.Join(++items);

            foreach (string value in items)
            {
                string[,] itemArr = new string[count, items.Length];
            }
        }

1 个答案:

答案 0 :(得分:0)

    for (jn = 0; jn < jobNum.Length; jn++)
   {
       string test = jobNum.ToString();
   }

这里似乎有一个逻辑错误。你没有在循环中使用jn,所以每次循环执行时你都要将test设置为jobNum.ToString()。您一遍又一遍地做同样的事情,并且您没有使用&#39;测试&#39;什么字符串。这是你想要的吗?

另外,请考虑上一个块中的这一行:

  

string [,] itemArr = new string [count,Convert.ToInt32(jobNum)];

您已通过将jobNum转换为Int32来删除此异常,但这是您想要的吗?我猜你实际上想要jobNum中的字符串数,在这种情况下你应该使用jobNum.Length。

UPDATE 我想我现在对你想要的东西有了更好的认识。您是否希望将与作业编号字符串匹配的多维数组与在该作业上花费的时间量相比较?如果是,请更改:

        foreach (string value in items)
        {
            string[,] itemArr = new string[count, Convert.ToInt32(jobNum)]; 
        }

类似于:

        string[,] itemArr = new string[count, 2]; 
        var items = jobNum.Distinct();
        for(int x=0; x<items.Count, x++)
        {
            itemArr[x][0] = items[x]; 
        }
    }

然后使用勾号,更改此刻度转换:

           double small = ((((ticksInt / 10000) / 1000) / 60) / 60);

           sum2 += small;

类似于:

  

sum2 + = TimeSpan.FromTicks(ticks [i])。TotalHours;

我必须看到jobNum和ticks的声明和初始化,以解释如何将sum2放入你的作业/时间数组。

您可能会考虑使用类似XmlSerializer之类的东西,看起来您正在使用XML派生数据进行大量手动操作,您可以自己简化它。