如何循环LINQ结果(VB.NET)

时间:2010-05-17 23:30:43

标签: vb.net linq foreach

我有一些代码尝试循环LINQ结果,但它似乎没有用。

这是代码

    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

这里的错误

  

类型上的公共成员'Region'   找不到“字符串”。描述:一个   未处理的异常发生在   当前网络的执行   请求。请查看堆栈跟踪   有关错误的更多信息   它起源于代码。

     

异常详细信息:   System.MissingMemberException:Public   'String'类型的成员'Region'不是   找到。

     

来源错误:

     

第33行:'和   写出结果第34行:
  对于每个项目在q第35行:
  HttpContext.Current.Response.Write(item.Region   &安培; vbCrLf)第36行:
  下一行37:

     

源文件:   E:\项目\ businesstrader \ App_Code文件\处理程序\ RegionsAutoComplete.vb   行:35

     

堆栈追踪:

     

[MissingMemberException:公共成员   未找到“String”类型的“Region”。   Microsoft.VisualBasic.CompilerServices.Container.GetMembers(字符串&安培;   MemberName,布尔报告错误)   +509081 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object   实例,类型类型,字符串   MemberName,Object []参数,   String [] ArgumentNames,Type []   TypeArguments,Boolean [] CopyBack)   +222 BT.Handlers.RegionsAutoComplete.ProcessRequest(HttpContext   上下文)   E:\项目\ businesstrader \ App_Code文件\处理程序\ RegionsAutoComplete.vb:35   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔& completedSynchronously)   75

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:2)

错误消息表明存储在bt_Regions属性中的对象属于String类型,因此他们没有您尝试访问的成员Region

我会仔细检查DAL.bt_Regions的类型是什么 - 看起来你假设它返回了一些类,但它似乎返回了一个字符串集合(可能只是区域名称?)。要查看它包含的内容,您可以像这样修改代码:

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

我还会尝试添加Option Strict On选项(如果可能),这将指示编译器在编译时检查这种错误。