1

我将加密的电子邮件地址存储在我的数据库中并使用我的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
4

1 回答 1

3

您需要实际解析查询,默认情况下它是后期绑定的,但如果您真的想要解析查询,您只需调用.ToList(). 我刚刚将您的查询放在下面的括号中并.ToList()在最后调用。不确定这是否是确切的VB 语法(来自此处的 C# 知识),但主体仍然相同。

Dim Query = (From c In DB.Something Select New With {.Email = DoDecrypt(c.Email)})
.ToList()
于 2012-04-17T18:42:15.003 回答