473,687 Members | 3,110 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

C# Duplicate key error in Dictionary with List<int> type key

20 New Member
Hello,
I am trying to create a dictionary item with its key as list type and value as custom object type. It gives me a error
"An item with the same key has already been added."

Here is my code:

Expand|Select|Wrap|Line Numbers
  1. List<int> Pkey = new List<int>();
  2. Dictionary<List<int>, Polynomial> A = new Dictionary<List<int>, Polynomial>();
  3. // initialize A with last column.
  4. for (int r = 0; r < n; ++r)
  5. {
  6.     Pkey.Clear();
  7.     Pkey.Add(r);
  8.     A.Add(Pkey, m.GetElement(r, n - 1));
  9. }
where m.GetElement(r, n - 1) returns a Polynomial type object.

Please help me out. I'm stuck.
Nov 19 '08 #1
15 18633
r035198x
13,262 MVP
You do realize from your code that you have created only one list?
Nov 19 '08 #2
hsachdevah
20 New Member
Creating one List means? ... if you are saying about 1 item in the list, then the code is fine as it is of some use to me later in the code
Nov 19 '08 #3
nukefusion
221 Recognized Expert New Member
To elaborate, you are only creating one list object: PKey. You then try to add that same object (PKey) to the Keys collection of your dictionary object A on each iteration of the loop.

Each object added to A's keys collection must be unique.

To fix your code you'd need to move the list declaration to inside the loop

Expand|Select|Wrap|Line Numbers
  1. Dictionary<List<int>, Polynomial> A = new Dictionary<List<int>, Polynomial>(); 
  2. // initialize A with last column. 
  3. for (int r = 0; r < n; ++r) 
  4.     List<int> Pkey = new List<int>();
  5.     Pkey.Add(r); 
  6.     A.Add(Pkey, m.GetElement(r, n - 1)); 
Nov 19 '08 #4
hsachdevah
20 New Member
thanks nukefusion.
it helped

To elaborate, you are only creating one list object: PKey. You then try to add that same object (PKey) to the Keys collection of your dictionary object A on each iteration of the loop.

Each object added to A's keys collection must be unique.

To fix your code you'd need to move the list declaration to inside the loop

Expand|Select|Wrap|Line Numbers
  1. Dictionary<List<int>, Polynomial> A = new Dictionary<List<int>, Polynomial>(); 
  2. // initialize A with last column. 
  3. for (int r = 0; r < n; ++r) 
  4.     List<int> Pkey = new List<int>();
  5.     Pkey.Add(r); 
  6.     A.Add(Pkey, m.GetElement(r, n - 1)); 
Nov 19 '08 #5
Plater
7,872 Recognized Expert Expert
It should be noted that since you are using an object as a key, you will not be able to create another List<int> with the exact same values contained within, and use it as a key.
Nov 19 '08 #6
nukefusion
221 Recognized Expert New Member
It should be noted that since you are using an object as a key, you will not be able to create another List<int> with the exact same values contained within, and use it as a key.
I don't think that's the case. As far as I know, the Dictionary collection uses the Equals() method to determine key equality.
In the case of a generic list of integers, it is the object reference that determines equality. Therefore, as long as the lists are not the same object, it doesn't matter whether or not the numbers inside the list are the same.

I tested it to be sure and I can add two integer lists containing just the number 1 to a dictionary with no exception.
Nov 19 '08 #7
Plater
7,872 Recognized Expert Expert
Isn't that what I just said?
Nov 19 '08 #8
nukefusion
221 Recognized Expert New Member
Isn't that what I just said?
No, you said:
you will not be able to create another List<int> with the exact same values contained within, and use it as a key.
...which is incorrect because you can. Just didn't want there to be any confusion.
Nov 19 '08 #9
Plater
7,872 Recognized Expert Expert
Oh ok I see the confusion.
I ment you couldn't create that list and then use it as the key to retrieve a value from a list with the same contents.
Nov 19 '08 #10

Sign in to post your reply or Sign up for a free account.

Similar topics

2
1788
by: John Dalberg | last post by:
I am adding integer values from a datarow collection to a List<int> using the Add method. The values are read in the correct order from the collection but once the List is populated, the values in the List are sorted in ascending order. Why? This is undesirable. John Dalberg
2
12662
by: deathtospam | last post by:
Is it possible to Databind to a strongly-typed list of integers (List<int>) ? I want to use <%# Databinder.Eval(Container.DataItem, "XXX") %inside a Repeater control in my ASPX page, but I don't know how to get at the List<intvalue. -= Tek Boy =-
2
2244
by: per9000 | last post by:
Hi, *background* I want a class containing an int (a list of sets of integer). This should be hidden for the user and he/she should be able to insert his/her favourite data structure so to be a little fancy I thought I'd do a Ctor like this: // this is the "core": private int sets;
8
2688
by: per9000 | last post by:
Hi, I wanted to test to compile an application I build for .NET 2.0 in with the 1.1 C# compiler. I encountered difficulties since I had a List<myClass>. I found a list of what is new in .NET 2.0 and generics is on it - I assume this is why I encounter problems. So this raises a number of questions: - What is the best replacement of List<intin 1.1 (or is the list just in another namespace)?
1
2427
by: Monty | last post by:
I have a Usercontrol with a public property List<intLinks List <intLinks= new List<int>(); public List<intLinkLabels { get { return Links; } set { Links = value; } }
10
5010
by: arnuld | last post by:
It is quite an ugly hack but it is all I am able to come up with for now :-( and it does the requires work. I want to improve the program, I know you people have much better ideas ;-) /* C++ Primer - 4/e * * exercise 9.20 * STATEMENT: * Write a program to to compare whether a vector<intcontains the
0
1331
by: DR | last post by:
System.Collections.Generic.List<intmyList = new System.Collections.Generic.List<int>(100); Does this preallocate 100 integers? Also, is there any way to preallocate an array of objects all at once? MyOb al= new MyOb; for (int z = 0; z < nCount; z++)
1
1635
by: Danny Ni | last post by:
Hi, I am using a method created by other, the function returns List<int>. If I bind this to a Repeater, what should the data binding expresssion looks like? <%# Eval("I don't know what to put in here") %> TIA
6
2931
by: chandramohanp | last post by:
Hi I am trying to modify class instance members using reflection. I am having problem when trying to add/remove/display elements related to List<int> member. Following is the code. class TestClass { public int i = 0; public int IValue
0
8947
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
7617
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6450
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5806
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4321
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4541
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2960
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2214
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
1947
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.