Asp.net 自定义对象集合无法强制转换到列表
我有一个自定义对象Asp.net 自定义对象集合无法强制转换到列表,asp.net,vb.net,collections,generic-collections,Asp.net,Vb.net,Collections,Generic Collections,我有一个自定义对象 Public Class oPerson private properties ... public properties ... End Class 然后我有一个歌剧集(歌剧集): 多年来一直运行良好,但现在我想对oPeople使用一些收集功能,例如: oPeople.Take(5) 我收到这个错误: 无法将类型为“System.Collections.Generic.List`1[BusinessLayer.DataContainer.oPerson]”的对象强制转换
Public Class oPerson
private properties
...
public properties
...
End Class
然后我有一个歌剧集(歌剧集):
多年来一直运行良好,但现在我想对oPeople使用一些收集功能,例如:
oPeople.Take(5)
我收到这个错误:
无法将类型为“System.Collections.Generic.List`1[BusinessLayer.DataContainer.oPerson]”的对象强制转换为类型为“BusinessLayer.DataContainer.oPeople”
除了从以下位置更改代码之外:
Dim students As BusinessLayer.DataContainer.oPeople = GetStudents()
致:
我想保留我的Opople类。你如何处理Opople的
结果。取(5)
?你能展示相关的代码吗?将它用作网格或中继器控件的数据源。我测试了你的代码(翻译成C#),没有问题。即使您只是将Dim result作为新列表(oPerson)
和result.AddRange(oPeople.Take(5))
,也会发生异常吗?oPeople.Take(5)
将返回一个IEnumerable(oPerson)
。让我猜猜:你在打电话给ToList?这将返回一个列表(操作人员)
,而不是操作人员
对象。您需要做的是创建一个oPeople
对象,调用它的AddRange
方法,并传入IEnumerable(Of oPerson)
.Oops!只是注意到@ConnorsFan已经发布了基本相同的建议。
Dim students As BusinessLayer.DataContainer.oPeople = GetStudents()
Dim students as List(Of BusinessLayer.DataContainer.oPerson) = GetStudents()