2015-06-22 56 views
-1

我輸入了「Volvo-2.0」,「Volvo-1.8」,「Ford-BMax」,我想創建一個查找表,如果「沃爾沃」輸入「-2-0」或「Volvo-1.8」,如果輸入「Ford-BMax」,則同樣返回「Ford」。在c中查找表的高效方法

如何在我的模型中創建查找? 我目前正在使用selectlist,但因爲我不想顯示selectlist我應該在我的模型中使用哪種替代方法進行查找?

public SelectList car = new SelectList(new List<object>{ 
           new {text="Volvo-2.0", value="Volvo"}, 
           new {text="Volvo-1.8", value="Volvo"}, 
           new {text="Ford-BMax", value="Ford"}},text,value} 
+2

爲什麼你的模型相關?你不是在尋找一種UI技術嗎?你能詳細說明你想要做什麼嗎?目前還不清楚你想要什麼。 – CodeCaster

+0

難道你只是簡單地使用'String.Substring'來返回從開始到'-'的子字符串嗎? – HimBromBeere

+0

使用字典爲此 –

回答

3

您應該使用Dictionary,因爲它的速度非常快:

Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("Volvo-1.8", "Volvo"); 
dict.Add("Volvo-2.0", "Volvo"); 
dict.Add("Ford-BMax", "Ford"); 

string brand = dict["Volvo-1.8"]; 

欲瞭解更多信息,看看here

1

詞典<T>會很快,正如其他答案所說。

C#有個縮寫,以填補他們的數據:

Dictionary<string, string> dict = new Dictionary<string, string>() 
    { 
     { "Volvo-1.8", "Volvo" }, 
     { "Volvo-2.0", "Volvo" }, 
     { "Ford-BMax", "Ford" }, 
    }; 
1

我會用一個Dictionary<,>(如king.code說),但我會用TryGetValue()方法來代替:

Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("Volvo-1.8", "Volvo"); 
dict.Add("Volvo-2.0", "Volvo"); 
dict.Add("Ford-BMax", "Ford"); 



string value; 

if(dict.TryGetValue("Volvo-1.8", out value)) 
{ 
    Console.WriteLine("Found: " + value); 
} 

TryGetValue()更安全,並且避免了2次查找(如果您使用的是dict.Contains("Volvo-1.8"),然後是dict["Volvo-1.8"]。)