0

目前我有这样的映射设置

//Identifiers to save (currently)
Dictionary<string, Dictionary<string, string>> toSaveIdentifiers =
    new Dictionary<string, Dictionary<string, string>>(); //

但是,我想为其添加一个额外的维度,因为我错过了要添加的额外属性。

我正在尝试设置某种形式的映射,这种映射在程序中经常被填充,并且在整个程序中也会被查找。我想知道这样做的最佳方法是什么。

//Identifiers to save (tuple)
Dictionary<Tuple<string,string>, Dictionary<string, string>> toSaveIdentifiers =
    new Dictionary<Tuple<string, string>, Dictionary<string, string>>(); //

//Identifiers to save (adding another dictionary dimension)
Dictionary<string, Dictionary<string,Dictionary<string, string>>> toSaveIdentifiers =
    new Dictionary<string, Dictionary<string, Dictionary<string, string>>>(); //

//Identifiers to save (adding keyvaluepair)
Dictionary<KeyValuePair<string,string>, Dictionary<string, string>> toSaveIdentifiers =
    new Dictionary<KeyValuePair<string, string>, Dictionary<string, string>>(); //

当我填充它/查找时,我会做类似的事情。

   // check identifier map dictionary
    if (dictionary.Keys.Contains(identifier))
    {
        if (dictionary[identifier].Keys.Contains(currency))
        {
            //stuff
        }
        else
        {
            //stuff
        }
    }
    else
    {
            //more stuff
    }

进行此查找的最佳方法是什么?

4

1 回答 1

0

由于您的标识符似乎都是字符串类型,您总是可以将它们全部连接成一个大字符串并将其用作键。然后,您只需要做一个,而不是做嵌套的包含。就存储不同级别的标识符而言,它也会更加灵活。

即给定一个2级密钥,它会是

string ident = level1Identifier + "." + level2Identifier;

(使用 string.format() 或 StringBuilder 会更有效,但这段代码更适合解释)

还要考虑加入字符应该是您知道不会出现在任何级别标识符中的东西,以避免混淆或意外重复。

于 2013-04-08T14:59:08.010 回答