我正在使用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
答案 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
来显示这些项目。
您还可以覆盖Equals
和GetHashCode
,以便影响两个对象的比较方式。 Distinct
方法将使用这两种方法来完成其工作。请参阅:Implementing the Equals Method