The type of return value debugging you're attempting is simply not possible with managed languages like C#. The C++ debugger provides this information, via the autos window, but not managed languages.
The primary reason why is that the CLR debugging engine simply doesn't provide this value. For C#, VB or F# to provide this they would need to rewrite every return statement to spill the value into a temporary and then return the temporary. Return value debugging could then be achieved by surfacing this temporary in the debugger.
var returnTemp = repo.GetProcedureReport(startDate, endDate).ToList();
return returnTemp;
This would work but it would provide negatives to the code. Most notably that big struct values would end up being copied twice and contribute negatively to performance. Additionally this rewrite would need to occur at compile time and would affect every method being compiled. It would be much less impactful if it could be done on demand at debug time. The negatives just out weigh the benefits here.
Note that VB.Net does provide return value debugging to a small degree. I've blogged about how that works here
http://blogs.msdn.com/b/jaredpar/archive/2011/01/12/why-the-debugging-difference-between-c-and-vb-net-return-values.aspx