【发布时间】:2010-03-21 00:31:31
【问题描述】:
我有以下代码:
Public Shared Function GetAvailableManufacturers() As List(Of Manufacturer)
'first get all the live orders and extract their mfrs'
Dim sos As List(Of OrderForm) = GetFormsByStatus(StockStatus.Building)
Dim unavailableMfrs As New List(Of Manufacturer)
For Each so As StockingOrder In sos
unavailableMfrs.Add(so.Source)
Next
'then remove all mfrs with an open SO from a list of all mfrs'
Dim allMfrs As List(Of Manufacturer) = Manufacturer.GetManufacturers
Return allMfrs.Except(unavailableMfrs) <----- error here
End Function
解释上面的作用:
-
GetFormsByStatus()不言自明 -
GetManufacturers()返回数据库中所有制造商的列表
我获取可用制造商的想法是在我的开放表单中获取所有制造商的列表,然后获取所有制造商的列表并排除第一个列表中的所有制造商,如下所示(伪):
List A: {1,2,3,4,5,6,7,8,9,10}
List B: {5,7,10}
Result: {1,2,3,4,6,8,9}
我已经根据this article设置了我的Manufacturer类,以便可以比较,但我仍然收到此错误:
无法将“
<ExceptIterator>d__92'1[csCore.Manufacturer]'”类型的对象转换为“System.Collections.Generic.List'1[csCore.Manufacturer]”类型。
我一开始以为是因为在测试期间GetFormsByStatus() 返回 0 个结果可能会导致问题,但如果提供的列表有 0 个项目,Except() 将不起作用是没有意义的。谁能发现我做错了什么?
非常感谢!
【问题讨论】: