Что-то вроде этого должно это сделать, если я правильно понял ваш вопрос:
var areaTime = from mov in items
where mov.startTime >= lowTime && mov.endTime <= highTime
group mov by mov.areaId into grp
select new
{
AreaID = grp.Key,
TimeSpent = grp.Sum(m => (m.endTime - m.startTime).TotalSeconds),
};
var areaSpentMostTimeIn = areaTime
.OrderByDescending(at => at.TimeSpent)
.FirstOrDefault();