none
Método CopyToDataTable se demora en convertir una consulta Linq To DataSet RRS feed

  • Pregunta

  • Hola,

    Estoy trabajando con dos DataTables el primero es tableTransaccion y el segundo tableReporte, del segundo obtengo una variable de tipo fecha(debo recorrer miles de registros y por cada uno tengo que hacer una consulta linq ) y agrego 60 minutos y resto 60 minutos, esto para crear un rango de tiempo en la consulta linq, la consulta se realiza bien, pero para transformar esta consulta se demora bastante con el metodo CopyToDatatable() y luego recorrer los registros.

    abra alguna forma mas eficiente para recorrer una consulta linq to dataset?

                'CONSULTA 
                desdeT = horT.AddMinutes(-60) 'resta una hora
                hastaT = horT.AddMinutes(60) 'agrega una hora
    
                Dim qRango = From item In tableReporte.AsEnumerable() _
                                                               Where CDate(item.Field(Of Date)("tiempoR").ToShortDateString()) = fechaT _
                                                                And item.Field(Of String)("patente").Trim() = sitioT _
                                                                And CDate(item.Field(Of Date)("tiempoR").ToShortTimeString()) >= desdeT _
                                                                And CDate(item.Field(Of Date)("tiempoR").ToShortTimeString()) <= hastaT _
                                                                 Select item
                'recorrer consulta
                Dim dtConsulta As DataTable = qRango.CopyToDataTable()

    agradecería de la ayuda para solucionar esta problemática

    saludos


    Mauricio Hernández

    martes, 21 de agosto de 2012 23:36

Todas las respuestas

  • pera que lo conviertes a datatable, porque no lo usas como entidad directamente

    o sino podrias crear una clase la cual crees

    ...

    Select New Entidad With {

        prop = item.prop,

        prop = item.prop2

    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 22 de agosto de 2012 0:33
  • Hola Leandro, Gracias por contestar

    revise la propuesta de código con entidad pero necesito investigar mas para realizarla ya que nunca había llegado usar linq, lo que he visto hasta ahora es que las consultas Linq To DataSet no tienen rendimiento al tratar de convertirlas en DataTable, incluso en DataRow; intente en colocar Dim rowPrimera as DataRow = qRango.First() y por cada vez que pasaba por aqui con un for each tardaba mucho tiempo, necesito iterar 370.000 filas que están en la datatable Uno y de aquí obtener la hora, patente para pasársela a la consulta linq que se ejecutara al datatable Dos.

    bueno de todas formas, seguiré intentando haber si encuentro algo mas eficaz.

    saludos


    Mauricio Hernández

    miércoles, 22 de agosto de 2012 16:16