select扩展方法可以投影到实例化对象列表

时间:2011-03-24 11:13:56

标签: .net vb.net extension-methods

我有两个声明如下的列表:

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)

奇怪的是代码编译,但在朗姆酒时间我得到一个类型的错误。做我想要达到的目的的正确方法是什么??

PS:请原谅截图篡改。

Error Screenshot

3 个答案:

答案 0 :(得分:2)

代码不应该编译开始。检查你是否有Option Strict。

一旦你弄清楚为什么它不应该编译,你的选择是:

  • 在查询结束时调用ToList,如下所示:

    Return lstDBItems.Select(Function(x)
                                dim oItem As New AppItem()
                                oItem.Property1 = x.DbProperty1
                                '...
                                Return oItem
                             End Function).ToList()
    
  • 将退货类型更改为IEnumerable(Of AppItem)

答案 1 :(得分:0)

ToList()之后添加Select以获得List(Of AppItem)作为返回值

答案 2 :(得分:0)

Select方法的结果是IEnumerable(Of AppItem)类型,无法将其分配给List(Of AppItem类型的变量。