3 messaggi dal 22 settembre 2011
Salve a tutti spero di aver postato il problema nel forum giusto.

ho una tabella creata con sql ce
leggo tutti gli elementi (circa 400)
poi per ogni elemento letto faccio unoa seconda interogazione
(ListaRisposte) e ne pesco tre random e poi le assegno ad un array(RisposteDaMescolare) e questa operazione richiede tantissimo tempo sicuramente c'e un modo piu' veloce di fare il tutto ma al mio livello attuale non riesco a trovarlo...c'e qualcuno che può darmi una mano grazie mille




String[] RisposteDaMescolare = new String[4];
    List<db_RisposteErrate> 

//leggo tutte le risposte dal db 400 circa

ListaRisposte=context.db_RisposteErrate.ToList();

//ne prendo 3 a caso
var Risposte = from ris in ListaRisposte.OrderBy(x => System.Guid.NewGuid()).Take(3) where ris.Db_Risposta != Domanda.Db_Risposta_1 select ris;
                    
  int cont = 1;

//questa operazione richiede circa 5 secondi 
foreach (db_RisposteErrate Risposta in Risposte)
                    {
                        RisposteDaMescolare[cont] = Risposta.Db_Risposta;
                        cont++;
                    }
28 messaggi dal 15 settembre 2011
Ciao,
vedi se riesci ad ottenere i primi due passi con una query sola, lasciando la logica nel database. Con una query più complessa dovresti evitare di caricare tutto in memoria
45 messaggi dal 08 maggio 2001
E' molto strano che un foreach su tre elementi già in memoria richieda tutto questo tempo. Tra l'altro, vedo che effettui una semplice assegnazione di una variabile stringa ed un incremento di un intero.
Sei sicuro che è in quel punto che impiega tutto questo tempo?
3 messaggi dal 22 settembre 2011
allora quel ciclo (non era chiaro nel mio precedente post) viene eseguito 300 volte quindi quella forech viene eseguita 900 volte

ora ho trovato una soluzione non so se e' la migliore o la piu' elegante ma almeno funziona ovvero:
metto il risultato di risposte in una list<string>

e man mano che prendo i 3 elementi li rimuovo (per evitare di prendere li stessi) e il tutto aviene istantaniamente....


grazie ad entrambi per le risposte :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.