Let it work through him. I will do it in C #, but I hope some enterprising young polyglot can make a translation for me and hammer in the accepted answer.
DateTime.Today gets the date today. DateTime.Today.DayOfWeek gets you today "day of the week" as an enumeration, where Sunday is 0 and Saturday is 6.
So, we can get the last Monday using:
var lastMonday = DateTime.Today.AddDays(1 - (int)DateTime.Today.DayOfWeek);
edit There is one small glitch, in the event that today is Sunday, you will receive the date of tomorrow, and not last Monday. There is probably some really complicated math way around this, but it is just as easy to throw an extra check:
if (lastMonday > DateTime.Today) lastMonday = lastMonday.AddDays(-7);
Then we just need to get ten of them:
var lastTenMondays = from i in Enumerable.Range(0, 10) select lastMonday.AddDays(i * -7);
source share