Nombre limite de résultats renvoyés dans une liste de Linq

J’utilise Linq / EF4.1 pour extraire des résultats d’une firebase database et je souhaite limiter les résultats aux (X) résultats les plus récents. Où X est un nombre défini par l’utilisateur.

Y a-t-il un moyen de faire cela?

Je les répète actuellement sous forme de List si cela peut aider à limiter le jeu de résultats. Bien que je puisse limiter cela en faisant une boucle jusqu’à ce que je touche X, je suppose que je ne transmets pas les données supplémentaires.

Juste au cas où cela serait pertinent … Projet C # MVC3 exécuté à partir d’une firebase database SQL Server.

Utilisez la fonction Take

 int numberOfrecords=10; // read from user listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords) 

En supposant que listOfItems est la Liste de vos objects d’entité et que CreatedDate est un champ qui a la valeur de date créée (utilisé ici pour effectuer la commande en descendant pour obtenir des éléments récents).

La fonction Take () renvoie un nombre spécifié d’éléments contigus à partir du début d’une séquence.

http://msdn.microsoft.com/en-us/library/bb503062.aspx

 results = results.OrderByDescending(x=>x.Date).Take(10); 

Le OrderByDescending va sortinger les éléments selon votre propriété date / heure (ou avec la logique que vous souhaitez utiliser pour obtenir le plus récent) et Take se limitera aux x premiers éléments (le premier étant le plus récent, grâce à la commande).

Edit: Pour renvoyer certaines lignes ne commençant pas à la première ligne, utilisez Skip() :

 results = results.OrderByDescending(x=>x.Date).Skip(50).Take(10); 

Utilisez Take() avant de convertir en une liste. De cette façon, EF peut optimiser la requête qu’il crée et renvoyer uniquement les données dont vous avez besoin.