В настоящее время, когда мне нужно запустить запрос, который будет использоваться w/paging, я делаю это примерно так:
//Setup query (Typically much more complex)
var q = ctx.People.Where(p=>p.Name.StartsWith("A"));
//Get total result count prior to sorting
int total = q.Count();
//Apply sort to query
q = q.OrderBy(p => p.Name);
q.Select(p => new PersonResult
{
Name = p.Name
}.Skip(skipRows).Take(pageSize).ToArray();
Это работает, но я задавался вопросом, возможно ли улучшить это, чтобы быть более эффективным при использовании linq? Я не мог придумать способ комбинировать счетчик с извлечением данных за один раз в DB без использования хранимой процедуры.