There has to be an easy answer:
var totalTime = TimeSpan.Zero; foreach (var timesheet in timeSheets) { //assume \"time\" is a correct, positive TimeSpan
This is a common mistake. TimeSpan.Add returns a new instance of TimeSpan.
TimeSpan.Add
TimeSpan