2012-04-17 7 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

,이 말 기본적으로 바인딩 된 데이터 테이블 함수에 대한 Linq에,하지만 당신이 실제로 쿼리를 해결하고자하는 경우, 당신은 단지를 필요 .ToList()으로 전화하십시오. 방금 검색어를 아래 괄호로 싸서 끝에 .ToList()라고했습니다. 이것이 정확한 VB 구문 (여기에서 C# 지식으로 이동)인지 확실하지 않지만 교장은 여전히 ​​동일합니다. 실제로 (. 값은 null 일 수 없습니다 매개 변수 이름 : 쿼리)을 ToDataTable 함수에서 예외가 발생

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

에 IDbCommand = DB.GetCommand으로 라인 희미한에 cmd에서 (TryCast (쿼리 된 IQueryable)) – OrElse

+0

쿼리는 IEnumerable을 할 것이다 지금은 해결되었으므로 IQueryable이 아닙니다. 그것을 바꾼다면 효과가 있습니까? – mattytommo

+0

'System.Collections.Generic.List'1 ..... 형식의 개체를'System.Linq.IQueryable '형식으로 캐스팅 할 수 없습니다. – OrElse

관련 문제