Хорошей практикой является "кэширование" рассчитанных значений производительности, в противном случае оно будет рассчитываться в каждом цикле (как, например, внутри цикла):
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime now = DateTime.Now;
DateTime next24hrs = now.AddHours(24);
IEnumerable<Sample> next24HoursSamples = collection.Where(sample=>sample.expires>now && sample.expires<next24hrs).ToList();
IEnumerable<Sample> sameDaySamples = next24HoursSamples.Where(sample=>sample.expires>=now && sample.expires<tomorrow).ToList();
Обратите внимание, что получен список sameDayиз уже отфильтрованного списка (этот же день является подмножеством следующих 24 часов), поэтому элементов для фильтрации меньше.
РЕДАКТИРОВАТЬ: я обновил код, чтобы использовать модель немедленного выполнения запроса, например @danijelsпредупреждает об отложенном исполнении.