Cómo guardar datos grandes en el archivo
-
28-10-2019 - |
Pregunta
Tengo una lista de quizás 50,000 entradas que están pobladas en DataGrid en WPF. Ahora quiero guardar los datos en la lista en un archivo que puede ser texto, o preferiblemente CSV. Como la lista es demasiado grande. Existe un problema de que mi método implementado que puede ser una simple escritura de archivos de texto o el método para copiar el contenido del DataGrid al portapapeles y luego volver a la cadena, y luego esa cadena para archivar usando StreamReader. Consume aproximadamente 4-5 minutos, incluso en el trabajador de fondo.
¿Hay alguna forma en que pueda guardar una lista enorme para archivar rápidamente?
Estoy usando DataGrid en WPF
CÓDIGO
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();
Solución
En lugar de usar el portapapeles, ¿por qué no iterar a través de la datos de datos y crear el archivo CSV?
Actualizar
Aquí hay unos ejemplos:
Otros consejos
Una cosa que ayudará es no cargar todos sus datos en el DataGrid cuando lo use para fines de visualización. Sería una buena idea usar la paginación: solo cargue los datos en el DataGrid que se necesitarán para cálculos o fines de visualización. Si el usuario quiere ver/usar más datos, regrese a su fuente de datos y obtenga más datos. Su aplicación no solo se ejecutará más rápido, sino que usará mucha menos memoria.