2013-10-02 109 views
0

我想有一個非常簡潔的方法來做到這一點,但我是新來的.NET。我有一堆映射對。該映射雖然兩種方式。我想存儲一次,像這樣:選擇鍵和返回值或選擇值並返回鍵

{"a", "a'"}, 
{"b", "b'"}, 
... 

使用Dictionary什麼的。我知道我可以使用linq輕鬆查詢字典,但是如果我查詢一個值或者如果我輸入一個鍵時返回值,我怎麼能有條件地讓它返回鍵?例如,如果輸入b',則輸出b。如果輸入a,則輸出a'

數據結構不一定非得是字典。我只想要最簡潔的方式來存儲它,並以最簡潔的方式來檢索它。這不是性能密集型的。

回答

2

創建字典擴展方法。

public static string Retrieve(this Dictionary<string,string> dictionary, string value) 
    { 
     var item = (from v in dictionary 
        where v.Key == value || v.Value == value 
        select (v.Key == value) ? v.Value : v.Key 
        ).FirstOrDefault(); 

     return item; 
    } 
+0

問題是,我不知道如果它匹配鍵或值。我必須知道它匹配哪個,所以我可以返回相應的值。 – tau

+1

對不起,如何編輯 –

3

最簡潔的方法是使用一個字典,並把它的一切,例如:

{ "a", "a'" } 
{ "a'", "a" } 
{ "b", "b'" } 
{ "b'", "b" } 

查找和使用將是快速和清晰

+0

我完全同意,這將是我的一般方法,但我希望c#已經有這個東西了。 – tau

+1

@tau你總是可以爲'Dictionary '創建一個包裝類,它可以做到這一點。 –

+0

如果你事先知道你主要使用了查找鍵,但偶爾需要按值查找,你可以使用像dict.Where(x => x ==「value」)。FirstOrDefault,但如果你通常必須搜索它可能相當緩慢的值。 – Dweeberly