Лучший способ запросить страницу данных и получить общее количество в объекте framework 4.1?

В настоящее время, когда мне нужно выполнить запрос, который будет использоваться с разбиением по страницам, я делаю это примерно так:

//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? Я не мог придумать способ объединить счетчик с извлечением данных за одну поездку в БД без использования хранимой процедуры.

56
задан C.J. 14 October 2011 в 12:14
поделиться