Может ли метод выбора расширения проецировать на список созданных объектов - PullRequest
0 голосов
/ 24 марта 2011

У меня есть два списка, объявленных следующим образом:

Dim lstDBItems As New List(Of DBItem)
Dim lstAppItems As New List(Of AppItem)

Я пытаюсь сделать что-то вроде этого:

У меня есть функция, которая возвращает List (Of AppItem):

Function GetAppItems() As List(Of AppItem)
'...
End Function

В вышеприведенной функции я заполняю lstDBItems, а затем записываю инструкцию return следующим образом:

Return lstDBItems.Select(Function(x)
                            dim oItem As New AppItem()
                            oItem.Property1 = x.DbProperty1
                            '...
                            Return oItem
                        End Function)

Странно то, что код компилируется, но в rumtime я получаю ошибку типа case.Как правильно делать то, чего я пытаюсь достичь ...?

PS: Извините за подделку скриншота.

Error Screenshot

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Код не должен компилироваться для начала.Убедитесь, что у вас включен Option Strict.

После того, как вы выяснили, почему он компилируется, а когда нет, вы можете выбрать:

  • Call ToList в конце запроса, например:

    Return lstDBItems.Select(Function(x)
                                dim oItem As New AppItem()
                                oItem.Property1 = x.DbProperty1
                                '...
                                Return oItem
                             End Function).ToList()
    
  • Измените тип возвращаемого значения на IEnumerable(Of AppItem)

0 голосов
/ 24 марта 2011

Результат метода Select имеет тип IEnumerable(Of AppItem), который не может быть присвоен переменной типа List(Of AppItem).

0 голосов
/ 24 марта 2011

Добавьте ToList() после Select, чтобы иметь List(Of AppItem) в качестве возвращаемого значения

...