Is it possible to create a multidimensional list in C#? I can create an multidimensional array like so:
string[,] results = new string[20, 2];
You can create a list of lists
public class MultiDimList: List> { }
or a Dictionary of key-accessible Lists
public class MultiDimDictList: Dictionary> { }
MultiDimDictList myDicList = new MultiDimDictList ();
myDicList.Add("ages", new List());
myDicList.Add("Salaries", new List());
myDicList.Add("AccountIds", new List());
Generic versions, to implement suggestion in comment from @user420667
public class MultiDimList: List> { }
and for the dictionary,
public class MultiDimDictList: Dictionary> { }
// to use it, in client code
var myDicList = new MultiDimDictList ();
myDicList.Add("ages", new List());
myDicList["ages"].Add(23);
myDicList["ages"].Add(32);
myDicList["ages"].Add(18);
myDicList.Add("salaries", new List());
myDicList["salaries"].Add(80000);
myDicList["salaries"].Add(100000);
myDicList.Add("accountIds", new List());
myDicList["accountIds"].Add(321123);
myDicList["accountIds"].Add(342653);
or, even better, ...
public class MultiDimDictList: Dictionary>
{
public void Add(K key, T addObject)
{
if(!ContainsKey(key)) Add(key, new List());
if (!base[key].Contains(addObject)) base[key].Add(addObject);
}
}
// and to use it, in client code
var myDicList = new MultiDimDictList ();
myDicList.Add("ages", 23);
myDicList.Add("ages", 32);
myDicList.Add("ages", 18);
myDicList.Add("salaries", 80000);
myDicList.Add("salaries", 110000);
myDicList.Add("accountIds", 321123);
myDicList.Add("accountIds", 342653);
EDIT: to include an Add() method for nested instance:
public class NestedMultiDimDictList:
MultiDimDictList>:
{
public void Add(K key, K2 key2, T addObject)
{
if(!ContainsKey(key)) Add(key,
new MultiDimDictList());
if (!base[key].Contains(key2))
base[key].Add(key2, addObject);
}
}