Как просмотреть результаты LINQ (VB.NET) - PullRequest
0 голосов
/ 18 мая 2010

У меня есть некоторый код, чтобы попытаться просмотреть результаты 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

ЗДЕСЬ ОШИБКА

Публичный член 'Регион' по типу «Строка» не найдена. Описание: Ан необработанное исключение произошло во время выполнение текущей сети запрос. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и откуда оно взято в коде.

Сведения об исключении: System.MissingMemberException: общедоступный элемент 'Region' для типа 'String' не найдено.

Ошибка источника:

Строка 33: 'и запишите результаты Строка 34:
Для каждого элемента в q строке 35:
HttpContext.Current.Response.Write (item.Region & vbCrLf) Строка 36:
Следующая строка 37:

Исходный файл: E: \ Projects \ businesstrader \ App_Code \ Обработчики \ RegionsAutoComplete.vb Линия: 35

Трассировка стека:

[MissingMemberException: открытый член Регион типа «Строка» не найден.] Microsoft.VisualBasic.CompilerServices.Container.GetMembers (String & MemberName, Boolean ReportErrors) +509081 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet (Object Экземпляр, Тип Тип, Строка MemberName, Object [] Аргументы, String [] ArgumentNames, Type [] TypeArguments, Boolean [] CopyBack) +222 BT.Handlers.RegionsAutoComplete.ProcessRequest (HttpContext контекст) в E: \ Projects \ businesstrader \ App_Code \ Обработчиков \ RegionsAutoComplete.vb: 35 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +181 System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, логическое и завершено синхронно) + 75

Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

2 голосов
/ 18 мая 2010

В сообщении об ошибке говорится, что объекты, хранящиеся в свойстве bt_Regions, имеют тип String и поэтому не имеют члена Region, к которому вы пытаетесь обратиться.

Я бы дважды проверил, какой тип DAL.bt_Regions - похоже, вы предполагаете, что он возвращает некоторый класс, но, похоже, он возвращает коллекцию строк (возможно, только имена регионов?). Чтобы увидеть, что он содержит, вы можете изменить код следующим образом:

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

Я бы также попытался добавить опцию Option Strict On (если это возможно), которая давала бы указание компилятору проверять ошибки такого рода во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...