没有唯一键的字典

Run*_*CMD 3 .net c# generics

我有Dictionary一些简单的string,string价值对.问题是,对于多个项目,有时密钥必须为空,这会产生字典错误 - >

 this key already exists.

还有另一课吗?

另外,我使用的是.NET 2.0,所以我不能使用Tuple类......

while (nav.MoveToNext())
{
    if (nav != null)
    {
        if (!String.IsNullOrEmpty(nav.Value))
        {
            if (nav.HasChildren)
            {
                navChildren = nav.Clone();
                navChildren.MoveToFirstChild();
                if (navChildren != null)
                    if (!veldenToSkip.Contains(nav.LocalName.Trim().ToLower())
                        && !nav.LocalName.StartsWith("opmerkingen_"))
                        itemTable.Add(nav.LocalName.Replace("_", " "), navChildren.Value);
                         //normal key and value
                while (navChildren.MoveToNext())
                {
                    if (!veldenToSkip.Contains(nav.LocalName.Trim().ToLower()))
                    {
                        if (navChildren != null)
                        {
                            if (!String.IsNullOrEmpty(navChildren.Value))
                            {
                                itemTable.Add("", navChildren.Value);
                                //Add blank keys
                            }
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想要这样的结构:

value1    value2
value3    value4
          value5
          value6
value7    value8
...
Run Code Online (Sandbox Code Playgroud)

Dar*_*l42 6

你可以实现ILookup接口......

包裹一个Dictionary <TKey,List <TValue >>


Hen*_*man 2

只需生成一个伪密钥...

int emptyKey = 0;

...
if (!String.IsNullOrEmpty(navChildren.Value))
{
   string key = "Empty_" + emptyKey.ToString();
   emptyKey ++;
   itemTable.Add(key, navChildren.Value);
   //Add blank keys
}
Run Code Online (Sandbox Code Playgroud)

您仍然拥有值,但请注意,字典不保留(添加的)顺序。