2010-05-12 57 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