39 votes

LINQ et pagination

Nous devons récupérer les données d'une base de données à l'aide de LINQ. Nous devons maintenant mettre en œuvre la pagination.

Je suppose qu'à un moment donné, nous devons récupérer 10 enregistrements à la fois et lorsque nous cliquons sur le bouton Suivant, alors il va récupérer les 10 enregistrements suivants de la base de données.

S'il vous plaît me guider avec le code. merci

105voto

Wim Haanstra Points 2501

J'utilise toujours le code suivant :

public static class PagingExtensions
{
    //used by LINQ to SQL
    public static IQueryable<TSource> Page<TSource>(this IQueryable<TSource> source, int page, int pageSize)
    {
        return source.Skip((page - 1) * pageSize).Take(pageSize);
    }

    //used by LINQ
    public static IEnumerable<TSource> Page<TSource>(this IEnumerable<TSource> source, int page, int pageSize)
    {
        return source.Skip((page - 1) * pageSize).Take(pageSize);
    }

}

C'est une classe statique, que vous pouvez inclure dans vos sources. Après avoir ajouté cette classe, vous pouvez faire ce qui suit :

MyQuery.Page(pageNumber, pageSize)

28voto

dlev Points 28160

La fonction LINQ Take() limitera le nombre d'éléments pris. La fonction Skip() ignorera les n premiers éléments. Quelque chose comme ça pourrait fonctionner :

myDataSource.Skip(pageSize * curPage).Take(pageSize)

15voto

Darin Dimitrov Points 528142

.Skip et .Take des méthodes d'extension pourraient être utilisées :

var result = (from c in Customers
              select new 
              {
                  c.City,
                  c.ContactName
              }
              ).Skip(5).Take(5);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X