Larry Bud wrote:
> I have a function which return a List, and I'm trying to add users to
> it from 3 different roles, but I don't want duplicate user names. The
> "Contains" ALWAYS is returning FALSE, so I'm not finding the dupe.
> Here's the code:
>
> Dim datalist As New List(Of TroubleTicketUser)
> Dim str As String
> Dim theroles(2) As String, therole As String
>
> theroles(0) = "IT User"
> theroles(1) = "IT Admin"
> theroles(2) = "Customer Service Rep"
>
> For Each therole In theroles
> For Each str In Roles.GetUsersInRole(therole)
> Dim tt As New TroubleTicketUser(str)
> If Not datalist.Contains(tt) Then datalist.Add(tt)
> Next
> Next
>
> datalist.Sort()
>
> Return datalist
>
> ---------------------
> Why doesn't the Contains work?
>
The Contains method works just fine, it just doesn't work the way that
you expected it to work.
The Contains method, when used on a List of reference types, checks if a
reference to the object exists in the list. As you create a new instance
of the TroubleTicketUser class, it's not the same object as the one that
exists in the list, eventhough they contain the same data.
What you want to do is to use a Dictionary(Of String, TroubleTicketUser)
where you use the user name as key.
--
Göran Andersson
_____
http://www.guffa.com