读取列表框数组的最佳方法

时间:2014-04-21 15:32:06

标签: sql vb.net

我正在使用sql查询来检索数据并写入列表框。但是,有时一个项目可能有多个值。

IE:

数据:“患者披露” 价值:“遇到”

数据:“患者披露” 价值:“订单”

在列表框中,订单项仅显示“患者信息披露”,但我在数组中写入了值。但是,我不希望出现两个相同的订单项。 “order”值应该是唯一显示它是否具有多个值的值。我怎么能这样做?

While reader.Read()
    Dim Myitem As New List(Of myitems)
    Myitem.Add(New myitems with {.Description = reader(0), .Value = reader(2)})
    '               If reader(2) = "Order" Then
    '                   listBox1.Items.Add(Myitem.ToArray)
    '               Else
    '                   listBox1.Items.Add(reader(0))
    '               End If

    listBox1.Items.AddRange(Myitem.ToArray)
End While

1 个答案:

答案 0 :(得分:1)

您可以使用

消除重复项
listBox1.Items.AddRange(Myitem.Distinct().ToArray())

但是,我不确定你在问什么。我要做的就是创建一个包含数据的类,而不是直接使用数据读取器,就像您已经完成的那样。给它一个比myitems更具描述性的名称。作为开发人员,我们一直在处理各种“项目”。

Public Class Patient // Or whatever the items are supposed to represent.
    Public Property Description As String
    Public Property Value As String

    Public Overrides Function ToString() As String
        Return String.Format("Description = {0}, Value = {1}", Description, Value)
    End Function
End Class

如果您然后将Patient个对象添加到ListBox,则ListBox会自动使用ToString来显示这些项目。

您还可以覆盖EqualsGetHashCode,以便影响两个对象的比较方式。 Distinct方法将使用这两种方法来完成其工作。请参阅:Implementing the Equals Method