miércoles, 19 de septiembre de 2012

Convertir LinQ Query en DataTable Visual Basic

Esta función permite convertir el resultado de un select elaborado en LinQ en DataTable:


Solamente es necesario pasarle a la función como parámetros el DataContext donde se encuentra ubicado la tabla y la consulta generada, por ejemplo: 

Public linqInventario As New InventarioCompraDataClassesDataContext()

Adjunto código de la función:

    Public Function ToDataTable(ByVal ctx As System.Data.Linq.DataContext, ByVal query As Object) As DataTable
        If query Is Nothing Then
            Throw New ArgumentNullException("query")
        End If

        Dim cmd As IDbCommand = ctx.GetCommand(TryCast(query, IQueryable))
        Dim adapter As New SqlDataAdapter()
        adapter.SelectCommand = DirectCast(cmd, SqlCommand)
        Dim dt As New DataTable("nueva_tabla")

        Try
            cmd.Connection.Open()
            adapter.FillSchema(dt, SchemaType.Source)
            adapter.Fill(dt)
        Finally
            cmd.Connection.Close()
        End Try
        Return dt
    End Function

2 comentarios: