2012-04-17 5 views
1

私は私のデータベースに暗号化された電子メールアドレスを保存し、だから私のLINQクエリは、のセットを返しますこれはレイトバインドですか?

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

のようなものであるAspGrid

で暗号化されていない電子メールアドレスを表示するには、鉱山のDoDecrypt機能を使用しますデバッグモードの電子メール...

Linq to datatable関数を使用した後、返される結果は、データベースで検出された結果です(暗号化されたものです)。

ここで何が問題になりますか? Linqクエリを変更するにはどうすればよいですか?

そして、ここでは

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 
あなたが実際にクエリを解決する必要があり

答えて

3

、それは後半にデフォルトでバインドされたDataTableの機能にLINQのですが、実際にクエリを解決したいとしている場合、あなただけをする必要が.ToList()に電話してください。私はあなたの質問を下の括弧で囲み、最後に.ToList()と呼んでいます。これが正確な VB構文(ここではC#の知識からのものです)であるかどうかは不明ですが、プリンシパルはまだ同じです。実際ToDataTable機能に例外をスロー

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

(値がnullにすることはできません。パラメータ名:クエリー)ライン薄暗いCMDでのIDbCommand = DB.GetCommand(TryCast(クエリ、のIQueryable))として – OrElse

+0

クエリはIEnumerableをされます今は解決されているので、IQueryableではありません。あなたがそれを変更した場合、それは動作するのですか? – mattytommo

+0

タイプ 'System.Collections.Generic.List'1 .....のオブジェクトをキャストできません' System.Linq.IQueryable 'を入力します。 – OrElse

関連する問題