如何允许用户输入Value1然后说Value1 = Value2

时间:2013-02-26 18:34:27

标签: c# winforms performance linq

我知道这可以通过几乎无穷无尽的解决方案来完成。但我正在寻找最实用的方法。

我有很多次需要这样的事情:

允许用户输入邮政编码,然后将邮政编码与预定义状态相匹配。 允许用户从ComboBox中选择国家/地区名称,然后将国家/地区名称与国家/地区代码匹配。 有颜色的名称,有价格的项目,有时间的地点,我可以继续。

到目前为止,我有几种方法可以做到这一点

1 if's:

if (input = Value1) { Something = Value1_OtherValue; }
else if (input = Value2) { Something = Value2_OtherValue; }
else if (input = Value2) { Something = Value3_OtherValue; }
else { Messagebox.Show("Error - No Match");}

2,使用DB:

@"Select Value_OtherValue FROM Table Where ValueList = '"+ Input +'";
DataSet DS = new DataSet();
SQLiteDataAdapter DA = new SQLiteDataAdapter(cmd);
DA.Fill(DS);
con.Close();
DataTable DT= DS.Tables[0];
if (DT.Rows.Count > 0)
{
    Something = DT.Rows[Dt.Rows.Count - 1][0].ToString());
}
else { Messagebox.Show("Error - No Match Found"); }

并使用字符串或拆分连接或许多其他字符串操作来提取值 现在这些列表永远不会是数千或数百万可能绝对最大的一千个值对,我可以想象一个带有分隔符的List,一个数组,使用LINQ一些如何将是最实用的方法,但我只是无法换行我的想法是如何启动这种代码。

我明白我几乎需要一个数据库,但如果我要使用任何类型的数据库类型对象,这将是将它添加到应用程序的唯一理由,我将没有其他用途的数据库和它每4或5个月最多只更换一次。因此,在这种情况下,添加数据库似乎有点矫枉过正。

基本上我有值对,我想在给出相反的值时使用匹配值。

1 个答案:

答案 0 :(得分:0)

SQLite通常是人们用于小型数据库解决方案的内容。任何时候我都有一些我不想在解决方案中硬编码的值(或者在配置文件中太多而不实用),我将它们放在一个小数据库中。通常只有几张桌子,没什么大不了的。如果需要,您甚至可以使用Entity Framework(有一个SQLite EF提供程序)。

这不是矫枉过正。拥有MSDE或需要SQL Server将是过度的。 SQLite就是为此而创建的。