views:

54

answers:

1

I've got some code to try and loop through LINQ results, but it doesn't seem to be working.

HERE'S THE CODE

    Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
        ''# the page contenttype is plain text'
        HttpContext.Current.Response.ContentType = "text/plain"

        ''# store the querystring as a variable'
        Dim qs As Nullable(Of Integer) = Integer.TryParse(HttpContext.Current.Request.QueryString("ID"), Nothing)

        ''# use the RegionsDataContext'
        Using RegionDC As New DAL.RegionsDataContext

            ''# create a (q)uery variable'
            Dim q As Object

            ''# if the querystring PID is not blank'
            ''# then we want to return results based on  the PID'
            If Not qs Is Nothing Then
                ''# that fit within the Parent ID'
                q = (From r In RegionDC.bt_Regions _
                        Where r.PID = qs _
                       Select r.Region).ToArray

                ''# now we loop through the array'
                ''# and write out the ressults'
                For Each item As DAL.bt_Region In q
                    HttpContext.Current.Response.Write(item.Region & vbCrLf)
                Next

            End If



        End Using
    End Sub

HERE'S THE ERROR

Public member 'Region' on type 'String' not found. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMemberException: Public member 'Region' on type 'String' not found.

Source Error:

Line 33: ' and write out the ressults Line 34:
For Each item In q Line 35:
HttpContext.Current.Response.Write(item.Region & vbCrLf) Line 36:
Next Line 37:

Source File: E:\Projects\businesstrader\App_Code\Handlers\RegionsAutoComplete.vb Line: 35

Stack Trace:

[MissingMemberException: Public member 'Region' on type 'String' not found.] Microsoft.VisualBasic.CompilerServices.Container.GetMembers(String& MemberName, Boolean ReportErrors) +509081 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack) +222 BT.Handlers.RegionsAutoComplete.ProcessRequest(HttpContext context) in E:\Projects\businesstrader\App_Code\Handlers\RegionsAutoComplete.vb:35 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Can anyone tell me what I'm doing wrong?

+2  A: 

The error message is saying that the objects stored in the bt_Regions property are of type String and so they don't have the member Region which you're trying to access.

I would double-check what is the type of DAL.bt_Regions - it looks like you're assuming that it returns some class, but it seems to be returning a collection of strings (perhaps just region names?). To see what it contains, you can modify the code like this:

HttpContext.Current.Response.Write(item & vbCrLf) // to print the string 

I would also try adding the Option Strict On option (if possible), which would instruct the compiler to check this kind of errors at compile-time.

Tomas Petricek
ah yes. using "item" worked since I'm only selecting one record (which is a string) from the database.
rockinthesixstring