I made a Dictionary<string, string>
collection so that I can quickly reference the items by their string identifier.
But I now also need to access this collective by index counter (foreach won't work in my real example).
What do I have to do to the collection below so that I can access its items via integer index as well?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestDict92929
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> events = new Dictionary<string, string>();
events.Add("first", "this is the first one");
events.Add("second", "this is the second one");
events.Add("third", "this is the third one");
string description = events["second"];
Console.WriteLine(description);
string description = events[1]; //error
Console.WriteLine(description);
}
}
}
You can't. And your question infers your belief that Dictionary<TKey, TValue>
is an ordered list. It is not. If you need an ordered dictionary, this type isn't for you.
Perhaps OrderedDictionary is your friend. It provides integer indexing.
You can not. As was said - a dictionary has no order.
Make your OWN CONTAINER that exposes IList
and IDictionary
... and internally manages both (list and dictionary). This is what I do in those cases. So, I can use both methods.
Basically
class MyOwnContainer : IList, IDictionary
and then internally
IList _list = xxx
IDictionary _dictionary = xxx
then in add / remove / change... update both.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With