Yield return - foreach / List (ou autre solution)
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Salut à tous !
J'ai un "problème" ... enfin c'est plutot que je cherche la meilleur solution :
J'ai une list de string qui se rempli dynamiquement en fonction des résultats d'une requête, et le truc c'est que certaines tables possèdent beaucoup de résultats (de l'ordre de 2/300 millions). Donc mon soucis est que lorsque je rempli ma liste, je fini par avoir mon exception (il me semble que c'est dans les 6.5M d'enregistrement).
Bon pas de soucis je mets mes résultats dans un fichier temporaire.
La question se pose au niveau du renvoi des résultats. Avant je renvoyais la liste (pas m'embêter) avec un petit "foreach" pour l'encadrer, mais dans le cas où j'ai un grand nombre de résultats, je voudrais que ca soit transparent (pour déterminer si oui ou non je dois récupérer dans un fichier ca va).
DONC ma question est concernant le "yield return" : si j'utilise un compteur global, et que je fais :
et que je fais
est-ce une bonne solution ? Ou alors avez vous d'autres idées ?
merci d'avance.
naga
PS : si je m'exprime mal demandez moi !
J'ai un "problème" ... enfin c'est plutot que je cherche la meilleur solution :
J'ai une list de string qui se rempli dynamiquement en fonction des résultats d'une requête, et le truc c'est que certaines tables possèdent beaucoup de résultats (de l'ordre de 2/300 millions). Donc mon soucis est que lorsque je rempli ma liste, je fini par avoir mon exception (il me semble que c'est dans les 6.5M d'enregistrement).
Bon pas de soucis je mets mes résultats dans un fichier temporaire.
La question se pose au niveau du renvoi des résultats. Avant je renvoyais la liste (pas m'embêter) avec un petit "foreach" pour l'encadrer, mais dans le cas où j'ai un grand nombre de résultats, je voudrais que ca soit transparent (pour déterminer si oui ou non je dois récupérer dans un fichier ca va).
DONC ma question est concernant le "yield return" : si j'utilise un compteur global, et que je fais :
string fonction_qui_renvoi() { compteur++; yield return maListe[compteur]; }
et que je fais
foreach(string s in fonction_qui_renvoi() ) { ... }
est-ce une bonne solution ? Ou alors avez vous d'autres idées ?
merci d'avance.
naga
PS : si je m'exprime mal demandez moi !
A voir également:
- Yield return - foreach / List (ou autre solution)
- List disk - Guide
- Driverpack solution - Télécharger - Divers Utilitaires
- Directory list & print - Télécharger - Divers Utilitaires
- Mots entre amis messenger solution - Forum Facebook
- Jeu mots entre amis ✓ - Forum jeux en ligne
2 réponses
Pour les intéresses : ca passera du moment que le yield est dans une boucle fini. Je posterai la fonction quand je l'aurai faite =)
if (iResultInFic > 0)//--si des résultats sont stockés dans des fichiers { for (int i = 1; i <= iResultInFic; i++)//--pour chaque fichier de résultats { using (StreamReader sr = new StreamReader(@"c:\tmpSql_" + iResultInFic.ToString() + ".dump")) { while (sr.Peek() >= 0) yield return sr.ReadLine(); } } } foreach (string s in lastResult)//résultats stocké dans ma liste yield return s;
ceux que ca intéresse devraient comprendre, sinon n'hésitez pas pour les questions.
PS : si meilleur idée je suis preneur =)
PS2 : les résultats sont supprimés lors d'une nouvelle requête (fichier ou liste)