我已输入“Volvo-2.0”,“Volvo-1.8”,“Ford-BMax”,我想创建一个查找表,如果“Volvo-2-0”或“Volvo”将返回“Volvo”如果输入“Ford-BMax”,则输入-1.8“并同样返回”Ford“。
如何在我的模型中创建查找? 我目前正在使用选择列表,但由于我不想显示选择列表,我应该在模型中使用哪些其他替代方法进行查找?
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}
答案 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 :(得分:1)
词典&LT; T&GT;正如其他答案所说的那样,会很快。
C#有一个简写来填充数据:
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{ "Volvo-1.8", "Volvo" },
{ "Volvo-2.0", "Volvo" },
{ "Ford-BMax", "Ford" },
};
答案 2 :(得分: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"]
。)