2013-02-06 9 views
0

Je récupère des données du serveur en 2 étapes.Comment éviter les enregistrements en double dans C#

Le premier est d'extraire au hasard 25 enregistrements de ma table et montre que les enregistrements à l'utilisateur, maintenant j'ai ajouté un bouton. Lorsque l'utilisateur clique sur ce bouton, je dois montrer les 25 enregistrements suivants de la base de données, mais je dois m'assurer que ces enregistrements ne contiennent personne qui soit déjà affiché. Comment faire cela dans C#

Voici le code par lequel je reçois 25 premiers dossiers

var records = context.couponservice.Query().Take(25).ToList(); 

merci à l'avance.

+0

Comment obtenez-vous 25 enregistrements au hasard? –

+1

Take renvoie les enregistrements du début de la séquence - ce n'est pas aléatoire. – Polyfun

+0

S'il vous plaît commenter la raison pour laquelle vous votez vers le bas, de sorte que je devrais garder cela à l'esprit pour la prochaine fois. – Smartboy

Répondre

1

Vous pouvez utiliser .Skip(pageSize * numberOfPages) avant le .Take(pageSize) pour ignorer plusieurs enregistrements/pages que vous ne souhaitez pas afficher.

1

Que diriez-vous

int position = 25; // Increase this for each page 
var nextRecords = context.couponservice.Query().Skip(position).Take(25).ToList(); 
0

Essayez cette

for(i=0;i<noOfPages;i++) 
{ 
    var records = context.couponservice.Query().Skip(i * 25).Take(25).ToList(); 
} 

Cela vous donnera à chaque fois que de nouveaux records.

0

Gardez une trace des éléments que vous avez déjà récupérés. Par exemple stocker les ID dans une liste ou quelque chose. Ne collectez ensuite que les éléments de votre source dont l'ID n'est pas dans la liste. A partir de ce résultat, vous pouvez sélectionner 25 éléments aléatoires.

Par exemple:

//Your datasource 
var source = new Dictionary<int, string> 
{ 
    {1, "One"}, 
    {2, "Two"}, 
    {3, "Three"}, 
    {4, "Four"}, 
    {5, "Five"}, 
    {6, "Six"}, 
    {7, "Seven"}, 
    {8, "Eight"}, 
    {9, "Nine"}, 
    {10, "Ten"} 
}; 

//The ID's of already fetched items 
var taken = new List<int> { 2, 7, 3, 6 }; 

//Subset: all items that haven't been taken yet: 
var temp = source.Where(s => taken.Contains(s.Key) == false); 

De « temp », vous pouvez sélectionner des éléments aléatoires maintenant et ajouter les ID de ces éléments à la liste des « prises ».

Questions connexes