Paginação do ASP.NET GridView usando a consulta Linq como fonte de dados

Eu estou procurando uma maneira de fazer paginação com um GridView quando eu definir a fonte de dados em tempo de execução usando uma consulta linq. aqui está o meu código:

ETDataContext etdc = new ETDataContext();
var accts = from a in etdc.ACCOUNTs
            orderby  a.account_id
            select new
            {
                Account = a.account_id,
                aType = a.SERVICEs.FirstOrDefault().SERVICE_TYPE.service_type_desc,
                name = a.SERVICEs.FirstOrDefault().service_name,
                Letter_dt = a.create_dt,
                PrimAccthldr = a.PEOPLE.first_name + " " + a.PEOPLE.middle_name + " " + a.PEOPLE.last_name
             };
GridView1.DataSource = accts;
GridView1.BindData();

Eu tenho a grade configurada para permitir paginação, mas recebo um erro informando que o evento PageIndexChanging não foi tratado. Eu procurei e encontrei o seguinte:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     GridView1.PageIndex = e.NewPageIndex;
     GridView1.DataBind();
}

Mas isso funciona bem quando você usa uma tabela de dados, mas não com o linq. Se eu adicionar uma religação no evento, ela precisará solicitar 7000 registros, o que pode ser um pouco lento. Alguém sabe como corrigir a paginação ao usar linq como este?

questionAnswers(1)

yourAnswerToTheQuestion