ASP.NET GridView la Pagination à l'aide de Linq requête comme source de données

Je suis à la recherche d'une façon de faire de la pagination avec un GridView lorsque j'ai mis la source de données au moment de l'exécution à l'aide d'une requête linq. voici mon code:

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();

J'ai la grille de jeu pour permettre d'échange, mais j'obtiens une erreur qui dit que le PageIndexChanging événement n'a pas été traitée. J'ai cherché et trouvé ce qui suit:

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

Mais qui fonctionne bien lorsque vous utilisez un datatable, mais pas avec linq. Si j'ajoute une reliaison dans l'événement, il a pour actualiser 7000 enregistrements qui peut être un peu lent. Personne ne sait comment résoudre la pagination lors de l'utilisation de linq comme ça?

OriginalL'auteur ecspot | 2010-08-27