Боюсь, мне гораздо удобнее использовать свободный синтаксис (в отличие от синтаксиса запросов), но вот один из возможных ответов LINQ:
ctx.ActivityLog
.Where(x => x.TimeStamp > dateFrom && x.TimeStamp <= dateTo)
.GroupBy(x => x.Name)
.Select(x => new { Name = x.Key, Total = x.Count() })
.OrderByDescending(x => x.Total)
.Take(100)
EDIT:
Хорошо, я вышел из своей зоны комфорта и предложил версию синтаксиса запроса, просто не ожидайте слишком многого. Я предупреждал вас о моих способностях выше:
(from y in (
from x in (
from log in ActivityLog
where log.Timestamp > dateFrom
where log.Timestamp <= dateTo
group log by log.Name)
select new { Name = x.Key, Total = x.Count() })
orderby y.Total descending
select new { Name = y.Name, Total = y.Total }).Take(100)