无法将类型为'System.Data.Linq.Table`1 []'的对象强制转换为'System.Collections.Generic.IEnumerable`1 []

时间:2013-12-18 20:01:28

标签: vb.net wcf ienumerable

目前我收到错误无法将表格转换为IEnumerable,我发现这一点非常令人困惑,因为我没有指定一个表格。

我将逐步解释正在做什么,请指出我出错的地方。

DAL:

Public Function GetCategories(ByVal DB As WholeSaleDataDataContext, Optional CategoryID? As Integer = Nothing) As IEnumerable(Of Category)
    If CategoryID Is Nothing Then
        Return DB.Categories.AsEnumerable()
    Else
        Return DB.Categories.Where(Function(Cat) Cat.CategoryID.Equals(CategoryID)).AsEnumerable
    End If    
End Function

WCF:

<DataContract(), KnownType(GetType(WholeSalesDAL.Category))>
Public Class Category2

End Class

Public Function GetCategory() As IEnumerable(Of Category2) Implements IWholeSaleData.GetCategory
    Return WholeSalesDAL.GetCategories(_DB).AsEnumerable
End Function

网站:

Private WholeSaleServices As WholeSaleService.WholeSaleDataClient

Public Sub New()
    WholeSaleServices = New WholeSaleService.WholeSaleDataClient("BasicHttpBinding_IWholeSaleData", "http://localhost:16722/WholeSaleService.svc")
    GetCategories()    
End Sub

Public Sub GetCategories()
    Dim z = WholeSaleServices.GetCategory
End Sub

1 个答案:

答案 0 :(得分:0)

我发现您的代码有两个问题:

编辑:#1解释了......

1)在您的WCF部分中,WholeSalesDAL.GetCategories(_DB)IEnumerable(Of Category),但您的函数应该返回`IEnumerable(Of Category2)。我没有看到如何进行类型转换。

2)我相信你不必要地使用AsEnumerable,这可能是导致异常的原因。你知道你是否需要在任何一个地方拨打AsEnumerable?我会尝试删除它。