Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   Finding Dupe in a List (http://www.velocityreviews.com/forums/t525686-finding-dupe-in-a-list.html)

Larry Bud 07-30-2007 01:26 PM

Finding Dupe in a List
 
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?


Omar Abid 07-30-2007 03:41 PM

Re: Finding Dupe in a List
 
On 30 juil, 15:26, Larry Bud <larrybud2...@yahoo.com> 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?


Hi,
Check out this link : http://expressdotnet.freehostia.com
Omar Abid


=?ISO-8859-1?Q?G=F6ran_Andersson?= 07-31-2007 09:56 AM

Re: Finding Dupe in a List
 
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

Larry Bud 07-31-2007 01:10 PM

Re: Finding Dupe in a List
 
On Jul 31, 5:56 am, Göran Andersson <gu...@guffa.com> wrote:
> 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.


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




=?ISO-8859-1?Q?G=F6ran_Andersson?= 07-31-2007 08:36 PM

Re: Finding Dupe in a List
 
Larry Bud wrote:
> On Jul 31, 5:56 am, Göran Andersson <gu...@guffa.com> wrote:
>> 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.

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

--
Göran Andersson
_____
http://www.guffa.com


All times are GMT. The time now is 02:33 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.