2010-05-12 48 views
0

奇怪的问题,但我有StringComparer.OrdinalIgnoreCase创建一个字典,看起来像这样找到元素的拼写在忽略大小写字典

AAA,10
AAB,20
AAC,12

然后,我使用myDictionary [“AAA”]来查找与该键关联的值,但我还需要知道的是该键的拼写是在myDictionary中的,例如在这种情况下,我希望它返回AaA。任何方式没有循环做到这一点? Thx。

回答

2
string value = myDictionary.First(v => StringComparer.Create(CultureInfo.CurrentCulture,true) 
        .Compare(v.Key,"AAA") == 0) 
        .Key 
+0

的字典定义为字典 所以myDictionary [ “AAA”]返回一个整数... – 2010-05-12 23:33:34

+0

啊,你说得对。我已经用另一种解决方案修改了上面的答案(不利用OrdinalIgnoreCase字典,但是如果只是拔出密钥,可能会更容易)。 – 2010-05-13 13:24:16

+0

我认为这个修正后的解决方案仍然在循环......循环只是委托给LINQ ...... – 2010-05-14 04:41:27

1

更改你的字典里,所以它看起来是这样的:

public struct myValue 
{ 
    int myInt; 
    string MixedCaseWord; 
} 

var dictionary = new Dictionary<string, myValue>(StringComparer.OrdinalIgnoreCase); 

var key = "AaA"; 
dictionary.Add(key, new MyValue { myInt = 10, MixedCaseWord = key }); 

var correctSpelling = dictionary["AAA"].MixedCaseWord; 
+0

不错,非常感谢。 – 2010-05-13 12:32:25