Finding Dupe in a List

  • Thread starter Thread starter Larry Bud
  • Start date Start date
L

Larry Bud

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
 
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

Hi,
Check out this link : http://expressdotnet.freehostia.com
Omar Abid
 
Larry said:
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

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.
 
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.

Ok, I get it. However, from what I see, I can't sort a Dictionary.
 
Larry said:
Ok, I get it. However, from what I see, I can't sort a Dictionary.

That is correct. You have to use an Array, a List or a SortedList for
that (or perhaps there are some more collections that can be sorted).

If you use a SortedList for example, you just have to loop through the
Values of the dictionary and add them to the list.
 
Back
Top