// 今こんな感じです。
for (int day = 0; day < 31; day++) {
var date = new Date(2013, 3, day + 1);
ret[day] = db.MyCal.Where(t => t.Date == date).FirstOrDefault();
}

// こんな感じでループをなくしたいのです。
var bgn = new DateTime(2013, 3, 1);
var end = new DateTime(2013, 3, 31);
var ret = db.MyCal.Where(t => bgn <= t.Date && t.Date <= end).〜〜〜