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();
È stato utile?

Soluzione

Invece di utilizzare gli appunti, perché non iterare attraverso il datatable e creare il file CSV.

Aggiornare

Ecco alcuni esempi:

Converti DataTable in CSV Stream

Convertire il set di dati DataTable in CSV

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top