var result =
from row in (
from line in File.ReadLines("xxx.csv")
let fields = line.Split(",")
select new { time = TimeSpan.Parse(fields[0]), value = int.Parse(fields[1]) }
)
group row by (int)row.time.TotalMinutes into gr
let values = (from r in gr select r.value)
select new { time = gr.First().time, start = gr.First().value, end = gr.Last().value, low = values.Min(), high = values.Max() };
using (var writer = new StreamWriter("yyy.csv"))
foreach (var r in result)
writer.WriteLine("{0},{1},{2},{3},{4}", r.time, r.start, r.end, r.low, r.high);