Напомню, вот как я интерпретирую вопрос:
Вам нужен список с самой последней запущенной операцией для агента с дополнительным требованием, чтобы операция была запущена в течение заданного интервала дат.
Это один из способов сделать это:
// the given date interval
DateTime startDate = new DateTime(2010, 1, 24);
DateTime endDate = new DateTime(2010, 10, 25);
IEnumerable<AgentActivity> agentActivities =
... original list of AgentActivities ...
IEnumerable<AgentActivity> latestAgentActivitiesByAgent = agentActivities
.Where(a => a.StartedAt >= startDate && a.StartedAt < endDate)
.GroupBy(a => a.AgentId)
.Select(g => g
.OrderByDescending(a => a.StartedAt)
.First());
(Если вопрос касается LINQ to SQL, возможно, есть некоторые ошибки. Я не пробовал.)