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

cs_Tolliap
Messages postés
60
Date d'inscription
lundi 4 décembre 2006
Dernière intervention
11 janvier 2013
- 9 févr. 2009 à 17:57 - Dernière réponse : krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
- 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 

Votre réponse

5 réponses

Meilleure réponse
krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
- 10 févr. 2009 à 10:18
3
Merci
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()) ;

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de krimog
cs_Tolliap
Messages postés
60
Date d'inscription
lundi 4 décembre 2006
Dernière intervention
11 janvier 2013
- 10 févr. 2009 à 10:45
0
Merci
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
Messages postés
342
Date d'inscription
dimanche 26 janvier 2003
Dernière intervention
25 mars 2009
- 13 févr. 2009 à 11:53
0
Merci
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
Messages postés
60
Date d'inscription
lundi 4 décembre 2006
Dernière intervention
11 janvier 2013
- 13 févr. 2009 à 15:03
0
Merci
Ouai, sa c'est sur ....


Qui ne tente rien, n'a rien
Commenter la réponse de cs_Tolliap
krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
- 13 févr. 2009 à 16:21
0
Merci
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.