各行の最長時間取得

A / B /C /D

12:00;@ / 8:00;@ / 12:00;@ / 6:00;@

上記のように、データテーブルのA〜Dの各列に値が入っているのですが、この中から最長時間(12:00;@)を取得したいのですが、どのような方法がありますでしょうか。

こんにちは

データテーブル内のデータの処理とのことで、繰り返し(各行)で処理するとしますと
その中で

max = row.ItemArray.OrderBy(Function(s) TimeSpan.ParseExact(System.Text.RegularExpressions.Regex.Match(s.toString(),"\d+:\d+").Value,"h\:mm",nothing)).Last().ToString

ただし上記の式は24時間未満に限ります。これを超える可能性ある場合は別のアプローチになります。

Yoichi様

ご回答ありがとうございます。

試してみましたが、入力文字列の形式が正しくないとのエラーが出てしまいました。
いずれかの列に空白がある場合などはエラーになったりしますでしょうか。

こんにちは

上記の式ですと空白があると、そこで変換できずに例外となります。
空白があること前提にしますと、以下になると思います。

row.ItemArray.Where(Function(s) not String.IsNullOrEmpty(s.ToString())).OrderBy(Function(s) TimeSpan.ParseExact(System.Text.RegularExpressions.Regex.Match(s.toString(),"\d+:\d+").Value,"h\:mm",nothing)).Last().ToString

Yoichi様

ご丁寧に教えていただき、ありがとうございました。
無事できました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.