Título: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: juanedwin en 23 Septiembre 2022, 04:28 am Saludos a todos.
Tengo un archivo de texto el cual contiene una lista de elementos supera los 35 000 lineas eso creo, y cada linea hay dos valores separados por un Tab por ejemplo digamos CP0000023 Aqui texto descriptivo del elemento CP0000024 Aqui texto descriptivo del elemento CP0000025 Aqui texto descriptivo del elemento CP0000026 Aqui texto descriptivo del elemento CP0000027 Aqui texto descriptivo del elemento como puedo hacer que llene el DataGridView pero usando el LinQ, esto lo he hecho pero con un Foreach recorriendo todoas las lineas pero me parece que se demora un poco, pues pienso que con el LinQ puede hacerlo mas rápido, de manera que pido su ayuda .. saludos y gracias desde ya Título: Re: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: juanedwin en 23 Septiembre 2022, 23:52 pm Aui esta el codigo que uso para rellenar el datagrid
Código
Título: Re: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: EdePC en 24 Septiembre 2022, 16:04 pm Se me ocurren un par de optimizaciones:
1. Usar StreamReader para leer, así no sobrecargas tu variable aa con más de 35 000 líneas XD 2. Ocultar el DataGridView para que no consuma recursos intentando mostrar resultados cada vez que se le agrega un registro Código
Probé ese código para leer un txt.txt con 35 000 líneas y carga el DataGridView en un par de segundos Tengo entendido que LinQ es para filtrar datos tipo SQL, no sé si por ahí vaya la cosa que necesites, de todas maneras no soy experto en VB o LinQ, solo hago pruebas con lo que tengo o encuentro y comparto para aprender yo también. Título: Re: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: juanedwin en 24 Septiembre 2022, 22:45 pm Tienes razon ocultar el datagrid ayuda, lo del bucle que haces se podria decir que en algo no noto mucha diferencia pero eso de ocultar el datagridview si esta genial, gracias
Espero lo del LinQ que podria hacer........ saludos Título: Re: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: Elektro Enjuto en 12 Octubre 2022, 21:55 pm esto lo he hecho pero con un Foreach recorriendo todoas las lineas pero me parece que se demora un poco, pues pienso que con el LinQ puede hacerlo mas rápido, de manera que pido su ayuda .. saludos y gracias desde ya Date cuenta de que cada vez que llamas al método "DataGridView1.Rows.Add" para agregar una fila estás invocando el evento de redibujado del control, ya que el control debe dibujar la fila y refrescar el contenido. Eso multiplicado por 35.000 lineas debe de tardarte una auténtica eternidad... Lo aconsejable es que adaptes tu código para utilizar el método ADDRANGE en lugar de ADD, de esa forma añades todas las filas de una vez y evitas redibujados adicionales e innecesarios del control. O también puedes especificar un origen de datos en la propiedad DATASOURCE como en el siguiente ejemplo usando LINQ donde genero un tipo anónimo como origen de datos: Código
La carga de filas es casi casi practicamente instantanea. PD: para este caso en concreto no está del todo mal utilizar LINQ (si lo prefieres podrías utilizar un For y una colección de tipo List, aunque habría que escribir más código), pero ten en cuenta que LINQ siempre será más lento que iterar los elementos de un array mediante un búcle For tradicional. Digo esto por el comentario que hiciste sobre la velocidad de ejecución de un For. Por que el problema de velocidad en tu código no es el uso del For, sino las miles de llamadas consecutivas al método "DataGridView1.Rows.Add" que ralentizan el procedimiento de adición de dichas filas, como ya expliqué. -Enjuto Mojamuto "rey de los frikis" a su disposición para futuras dudas. Título: Re: Llenar un DatagridView de dos columnas con Linq en VB .net Publicado por: juanedwin en 18 Octubre 2022, 23:05 pm Gracias, por la respuesta claro el LinQ es mas rápido; tuvo un error con el tipo anonimo, asi que estuve batallando con esto, entonces empeze un proyecto nuevo solo con un datagridView y el archivo de texto y pude conseguir algo que hasta el momento esta Ok, lo cargo al momento... y aqui el codigo, uso un archivo de texto como recurso...
Código
|