这是晚期绑定还是什么?

时间:2012-04-17 18:37:44

标签: vb.net linq linq-to-sql datatable late-binding

我将加密的电子邮件地址存储在我的数据库中并使用我的DoDecrypt函数,在AspGrid中显示未加密的电子邮件地址

所以我的LINQ查询类似于

Dim Query = From c In DB.Something Select New With {.Email = DoDecrypt(c.Email)}

以调试模式返回一组电子邮件...

使用Linq to datatable函数后,返回的结果是数据库中找到的结果,这些结果是加密结果。

这里出了什么问题? 我该如何修改我的Linq查询?

这是Linq to datatable函数

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

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

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

1 个答案:

答案 0 :(得分:3)

您需要实际解析查询,默认情况下它是后期绑定,但如果您确实想要解析查询,则只需调用.ToList()即可。我刚刚在下面的方括号中包含您的查询,并在结尾处调用.ToList()。不确定这是否是完全 VB语法(来自C#知识),但是主体仍然是相同的。

Dim Query = (From c In DB.Something Select New With {.Email = DoDecrypt(c.Email)})
.ToList()