Vb.net 将模型集合作为输出返回

Vb.net 将模型集合作为输出返回,vb.net,collections,model,Vb.net,Collections,Model,我只是尝试创建一个函数来返回一组用户信息。但是,为了能够在以后将项目添加到集合中,我使用了arrayList,但最后我得到了一个类型的错误arrayList无法转换为一维用户数组 这是我的密码: Function getDoctorsList() As Users() Dim userCollection As New ArrayList Dim sql = "SELECT * FROM '" + _tblName + "' WHERE usertype = 'doctor'"

我只是尝试创建一个函数来返回一组用户信息。但是,为了能够在以后将项目添加到集合中,我使用了arrayList,但最后我得到了一个
类型的错误arrayList无法转换为一维用户数组

这是我的密码:

Function getDoctorsList() As Users()
    Dim userCollection As New ArrayList
    Dim sql = "SELECT * FROM '" + _tblName + "' WHERE usertype = 'doctor'"
    Dim dr As SqlDataReader = dbHelper.ExecuteAndGetReader(sql)
    While dr.Read
        Dim user As New Users
        user.Id = IIf(IsDBNull(dr("id")), 0, dr("id"))
        user.UserName = IIf(IsDBNull(dr("username")), "", dr("username"))
        user.UserNin = IIf(IsDBNull(dr("user_nin")), 0, dr("user_nin"))
        user.UserType = IIf(IsDBNull(dr("usertype")), "", dr("usertype"))
        user.Password = IIf(IsDBNull(dr("password")), "", dr("password"))
        userCollection.Add(user)
    End While
    Return userCollection
End Function

如何解决这些问题?

让您的方法返回一个
数组列表

Function getDoctorsList() As ArrayList()
Return userCollection.ToArray()
ArrayList
中创建一个
数组

Function getDoctorsList() As ArrayList()
Return userCollection.ToArray()
或者,最好的解决方案是让您的方法返回一个
IEnumerable(Of User)

您还应该使用
列表(用户)
而不是
数组列表
,因为它是类型安全的(而且更清晰),并且还实现了
IEnumerable(用户)


编辑

使用
IEnumerable(用户数)
和:


如果您以后真的需要将其他用户添加到方法之外的集合中,您可以使用
IEnumerable(Of User)
创建一个
List
列表,就像
Dim List=new List(Of User)(getDoctorsList())
一样简单,或者让您的方法返回一个
列表(Of User)
,但是我会坚持使用
IEnumerable(Of User)
,因为这是最干净的方法,事实上我对这方面非常熟悉,所以我不知道如何使用IEnumerable。你能在你的答案上加一个例子吗?好的,我知道了。现在你能告诉我,如何定义一个DropDownList来使用这个列表,以及如何为文本和值指定字段吗?我添加了一个如何使用DataRowExtensions的示例,如果你使用这样的东西,它会很方便。也许你觉得它有用。