Remplir une List<> Généric [Résolu]

cs_Tolliap 60 Messages postés lundi 4 décembre 2006Date d'inscription 11 janvier 2013 Dernière intervention - 9 févr. 2009 à 17:57 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 13 févr. 2009 à 16:21
Bonjour,

Je possède une base de données SQL SERVER, avec une table "Personne".
A l'intérieure de cette table il y a environ plus de 10 000 Ligne de personnes.
Au début je suis partie pour remplir un DataSet avec un SqlDataAdapter, mais le probleme c'est que sa prend beaucoup de mémoire même une fois détruit...
J'entend partout sur les forum divers qu'il vaut mieux utilisé des List<> plutôt que des DataSet... ok, essayons.
Mon probleme est le suivant, comment on peut remplir une List rapidement comme le SqlDataAdapter pour le DataSet?
Il y a t'il une solution rapide, ou faut il faire une foreach sur le DataReader et ajouter à la main...

Merci de m'indiqué (ou morienté) vers une solution rapide et qui prend moin de mémoire qu'un DataSet une fois Détruit.

Qui ne tente rien, n'a rien
Afficher la suite 

5 réponses

Répondre au sujet
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 10 févr. 2009 à 10:18
+3
Utile
Salut.

Le plus rapide, c'est encore de ne pas gérer tes 10 000 entrées à chaque fois. Je doute que tu cherches à toutes les afficher en même temps (si c'est pour les afficher, tu ferais au moins une pagination). Donc je serais toi, je regarderais d'abord quels sont les entrées dont du as réellement besoin.
Et si cependant tu as besoin de faire du traitement sur chaque entrée, pourquoi les mettre dans une liste ou un dataset ? Un while(reader.Read()) sur un SqlDataReader est clairement plus simple et tu y gagneras vachement en mémoire.

Krimog :
while (!succeed = try()) ;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
cs_Tolliap 60 Messages postés lundi 4 décembre 2006Date d'inscription 11 janvier 2013 Dernière intervention - 10 févr. 2009 à 10:45
0
Utile
Ok, je pense que je vais passer par une pagination car faire un while(reader.Read()) sur un SqlDataReader et horriblement long...

Merci pour ta réponse.


Qui ne tente rien, n'a rien
Commenter la réponse de cs_Tolliap
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 13 févr. 2009 à 11:53
0
Utile
Faire des paginations avec SQL Server qui ne gère pas LIMIT, c'est parfois assez tordu ceci dit.
Commenter la réponse de bubbathemaster
cs_Tolliap 60 Messages postés lundi 4 décembre 2006Date d'inscription 11 janvier 2013 Dernière intervention - 13 févr. 2009 à 15:03
0
Utile
Ouai, sa c'est sur ....


Qui ne tente rien, n'a rien
Commenter la réponse de cs_Tolliap
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 13 févr. 2009 à 16:21
0
Utile
Tordu, c'est clair, mais pas infaisable.
Il "suffit" grosso-modo de trier à l'envers, de prendre le TOP (nbtotal + 1 - premier à prendre), puis de retrier dans le bon sens et prendre le TOP (nb à prendre). Enfin, j'avoue, c'est pas l'éclate, mais je pense que c'est quand même plus rapide que de traiter les 10000 enregistrement ensembles (surtout si tu fais une procédure stockée).

Genre mes enregistrements : 1 2 3 4 5 6 7 8 9. (9 éléments) Je veux du 2ème au 4ème
1) Tri à l'envers : 9 8 7 6 5 4 3 2 1
2) Top (9+1-2) : 9 8 7 6 5 4 3 2
3) Tri à l'endroit : 2 3 4 5 6 7 8 9
4) Top (4+1-2) : 2 3 4

Krimog :
while (!succeed = try()) ;
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.