【问题标题】:Unable to cast object of type 'System.Data.Linq.Table`1[]' to type 'System.Collections.Generic.IEnumerable`1[]无法将“System.Data.Linq.Table`1[]”类型的对象转换为“System.Collections.Generic.IEnumerable`1[]”类型
【发布时间】:2013-12-18 20:01:27
【问题描述】:

目前我收到无法将表格转换为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

【问题讨论】:

  • 你从哪里得到错误?
  • 您的 WCF 代码 sn-p 显示您正在从 DAL 返回 GetCategories 的结果,但此函数的签名返回 IEnumerable(Of Category2)。这是笔误吗?
  • @ataravati 有什么语法错误代码本身有效我在某处犯了转换错误
  • @J.Hudler 不可以在 datacontact 中看到它是已知类型
  • @Enzero,对不起!你是对的。

标签: vb.net wcf ienumerable


【解决方案1】:

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

编辑:#1 解释...

1) 在您的 WCF 部分中,WholeSalesDAL.GetCategories(_DB) 是 IEnumerable(Of Category),但您的函数应该返回 `IEnumerable(Of Category2)。我看不出这种类型转换是如何完成的。

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

【讨论】:

  • @psuedocoder 这个asenumerable本身没有错,类型转换是通过datacontract已知类型完成的
  • @Enzero 我明白了,谢谢。除非出于某种原因有必要,否则我仍然会尝试删除 AsEnumerable。
  • @psuedocoder 删除了asenumerable 仍然有同样的问题
猜你喜欢
  • 2015-09-14
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多