Come salvare i dati di grandi dimensioni su file
-
28-10-2019 - |
Domanda
Ho un elenco di forse 50.000 voci che sono popolate in DataGrid in WPF. Ora voglio salvare i dati nell'elenco in un file che può essere testo o preferibilmente CSV. Poiché la lista è troppo grande. Esiste un problema che il mio metodo implementato che potrebbe essere una semplice scrittura di file di testo o il metodo per copiare il contenuto dal datagrid per gli appunti e quindi di nuovo su String, quindi quella stringa su file utilizzando StreamReader. Consuma circa 4-5 minuti anche se è nel lavoratore in background.
Esiste un modo in cui posso salvare un elenco enorme da archiviare rapidamente?
Sto usando DataGrid in WPF
CODICE
dataGrid1.SelectAllCells();
dataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dataGrid1);
String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
///Never reach to step Below thread stays on above line
dataGrid1.UnselectAllCells();
Clipboard.Clear();
StreamWriter file = new System.IO.StreamWriter(SavePageRankToPDF.FileName);
file.WriteLine(result);
file.Close();
Soluzione
Invece di utilizzare gli appunti, perché non iterare attraverso il datatable e creare il file CSV.
Aggiornare
Ecco alcuni esempi:
Altri suggerimenti
Una cosa che ti aiuterà è non caricare tutti i dati nel datagrid quando lo si utilizza per scopi di visualizzazione. Sarebbe una buona idea utilizzare il paging: caricare solo i dati nel datagrid che saranno necessari per calcoli o scopi di visualizzazione. Se l'utente desidera vedere/utilizzare più dati, torna all'origine dati e ottieni più dati. Non solo la tua app funzionerà più velocemente, ma utilizzerai molta meno memoria.