-1

こんにちは私は文字列の配列を取得しました、そしてそれらはフォーマットで私自身によって作られた期間ですH:M:S:MS

文字列の例:

0:0:4:410
0:0:1:425
0:0:1:802
0:0:1:509
0:0:1:674
0:0:1:628
0:0:2:76

arraylist内のこれらのアイテムの合計/平均/最小/最大値をどのように確認できますか?

配列リスト名はarrayLLです。

私はC#を初めて使用するので、誰かが文字列の操作方法を教えてくれることを願っています。

配列に追加する関数は次のとおりです。

if (Session["DT"].ToString() != "")
{
    TimeSpan ts = ((DateTime)Session["DT2"]).Subtract((DateTime)Session["DT"]);

    Session["TimeL"] = ts.Hours.ToString() + ":" 
                            + ts.Minutes.ToString() + ":"
                            + ts.Seconds.ToString() + ":" 
                            + ts.Milliseconds.ToString();
}
4

3 に答える 3

2

数値が時間、分、秒、およびミリ秒を表すと仮定すると、次のことを試すことができます。

// Empty list you will populate:
List<int> durationsInMilliseconds = new List<int>();

// Loop through your existing data, and calculate all
// durations into milliseconds:
foreach (string word in yourDurationArray)
{
    string[] values = s.Split(':');
    int hoursAsMilliseconds = Integer.parse(values[0]) * 60 * 60 * 1000;
    int minutesAsMilliseconds = Integer.parse(values[1]) * 60 * 1000;
    int secondsAsMilliseconds = Integer.parse(values[2]) * 1000;

    int sumDurationAsMilliseconds = hoursAsMilliseconds + 
                                    minutesAsMilliseconds + 
                                    secondsAsMilliseconds + 
                                    Integer.parse(values[3]);

    durationsInMilliseconds.add(sumDurationAsMilliseconds);
}

durationsInMillisecondsこれで、単一の比較可能な形式の数値を含むタイプ Integer ( ) のリストが得られます。これにより、必要な計算を実行できるはずです。

(PS: 元の入力データと同じ形式の結果が必要な場合は、MS から時間、分、秒に逆算する操作を追加する必要があります。)

于 2012-08-20T10:48:27.030 に答える
1

私はそれらが期間であると思うので、私はあなたがこれをするべきです

var enu_ts = yourvariable.OfType<string>().Select(x => 
             TimeSpan.Parse(x, @"h\:m\:s\:fff", CultureInfo.InvariantCulture));

マックス

var max = enu_ts.Max().ToString();

最小

var max = enu_ts.Min().ToString();
于 2012-08-20T10:31:54.357 に答える
1
foreach(string s in dateString)
{
   spanList[i] = TimeSpan.Parse(s);
   total=total.Add(spanList[i++]);
}

Response.Write("Max TimeSpan:"+spanList.Max<TimeSpan>());
Response.Write("Min TimeSpan:" + spanList.Min<TimeSpan>());
Response.Write("Total Sum of TimeSpan:"+total);
于 2012-08-20T13:32:37.097 に答える