How to get just unique values from a List<object>

P

Paul

Hi I have a list of type object. The object has an ID as one of the elements
and I would like to create another list that just has objects with unique IDs.
For example
in the list if I have
listofobject[0].ID = 1
listofobject[1].ID =1
listofobject[2].ID = 2
I would like new list with only
listofobject[0].ID =1
listofobject[1].ID = 2
Thanks.
 
L

Lloyd Sheen

Paul said:
Hi I have a list of type object. The object has an ID as one of the elements
and I would like to create another list that just has objects with unique IDs.
For example
in the list if I have
listofobject[0].ID = 1
listofobject[1].ID =1
listofobject[2].ID = 2
I would like new list with only
listofobject[0].ID =1
listofobject[1].ID = 2
Thanks.
If you are using VS 2008 then you can do a linq query.

LS
 
P

Paul

Hi thanks for the response. Still using vs2005, ended up just going through
the list and if in second list do nothing, else add to second list. The
second list is the one that ends up with just the unique values.
--
Paul G
Software engineer.


Lloyd Sheen said:
Paul said:
Hi I have a list of type object. The object has an ID as one of the elements
and I would like to create another list that just has objects with unique IDs.
For example
in the list if I have
listofobject[0].ID = 1
listofobject[1].ID =1
listofobject[2].ID = 2
I would like new list with only
listofobject[0].ID =1
listofobject[1].ID = 2
Thanks.
If you are using VS 2008 then you can do a linq query.

LS
 
G

Göran Andersson

Paul said:
Hi thanks for the response. Still using vs2005, ended up just going through
the list and if in second list do nothing, else add to second list. The
second list is the one that ends up with just the unique values.

That doesn't scale very well, as checking if the list contains a value
gets considerably slower as the list grows. You should use a dictionary
for checking if the values exist or not:

Dictionary<int, int> unique = new Dictionary<int, int>();
foreach (int value in listofobjects) {
if (unique.ContainsKey(value)) {
// counts occurances - you can skip this if you don't want it:
unique[value]++;
} else {
unique.Add(value, 1);
}
}
 
P

Paul

thanks for the response. I do have some code working but will give it a try.
I converted the application from a windows to a console app as I need to
schedule it to run through sql server agent. Anyhow I am getting the error
on two methods now with the console app, worked fine in the windows app. The
error is (an object reference is required for the non static field, method or
property). This occures on the line were I call a method that I am passing 4
string lists into, so looks like
method2(emails, reports, names, days).
any ideas.
--
Paul G
Software engineer.


Göran Andersson said:
Paul said:
Hi thanks for the response. Still using vs2005, ended up just going through
the list and if in second list do nothing, else add to second list. The
second list is the one that ends up with just the unique values.

That doesn't scale very well, as checking if the list contains a value
gets considerably slower as the list grows. You should use a dictionary
for checking if the values exist or not:

Dictionary<int, int> unique = new Dictionary<int, int>();
foreach (int value in listofobjects) {
if (unique.ContainsKey(value)) {
// counts occurances - you can skip this if you don't want it:
unique[value]++;
} else {
unique.Add(value, 1);
}
}
 
P

Paul

Got it working!
--
Paul G
Software engineer.


Paul said:
thanks for the response. I do have some code working but will give it a try.
I converted the application from a windows to a console app as I need to
schedule it to run through sql server agent. Anyhow I am getting the error
on two methods now with the console app, worked fine in the windows app. The
error is (an object reference is required for the non static field, method or
property). This occures on the line were I call a method that I am passing 4
string lists into, so looks like
method2(emails, reports, names, days).
any ideas.
--
Paul G
Software engineer.


Göran Andersson said:
Paul said:
Hi thanks for the response. Still using vs2005, ended up just going through
the list and if in second list do nothing, else add to second list. The
second list is the one that ends up with just the unique values.

That doesn't scale very well, as checking if the list contains a value
gets considerably slower as the list grows. You should use a dictionary
for checking if the values exist or not:

Dictionary<int, int> unique = new Dictionary<int, int>();
foreach (int value in listofobjects) {
if (unique.ContainsKey(value)) {
// counts occurances - you can skip this if you don't want it:
unique[value]++;
} else {
unique.Add(value, 1);
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top