Это невозможно сделать без предварительной материализации объектов из IQueryable в список, потому что упорядочивание элементов без их материализации означает изменение самого IQueryable, что может привести к неожиданным результатам при выполнении дальнейших операций.
Для решения вашей конкретной проблемы с сортировкой по полю Records.id в соответствии с порядком значений в списке long numbers, вам необходимо использовать метод OrderBy с использованием OrderBy и ThenBy вместо ThenBy. Примерно так:
```csharp
var orderedQuery = records.OrderBy(r => r.Id); // сортировка по полю Id
foreach (var number in numbers)
{
long value = number;
orderedQuery = orderedQuery.ThenBy(d => d.Id == value);
}
var result = orderedQuery.ToList();
```
Этот код должен правильно упорядочить записи в соответствии с порядком значений в списке numbers без необходимости предварительной материализации объектов из IQueryable в список.