我知道这可以通过几乎无穷无尽的解决方案来完成。但我正在寻找最实用的方法。
我有很多次需要这种事情:
允许用户输入邮政编码,然后将邮政编码与预定义状态进行匹配。
允许用户从组合框中选择国家名称,然后将国家名称与国家代码匹配。
有颜色的名字,有价格的物品,有时间的地点,我可以继续。
到目前为止,我有几种方法可以做到这一点
1如果是:
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"); }
并使用字符串或拆分连接或其他许多字符串操作来提取值
现在这些列表在绝对最大为一千个值对的情况下永远不会成千上万,我可以使用LINQ对带有定界符的列表,数组进行成像,这将是最实用的方法,但是我无法包装我的想法是围绕如何启动这种代码。
我知道我几乎为此需要一个数据库,但是如果我要使用任何类型的数据库类型对象,这将是将其添加到应用程序的唯一原因,那么我将没有其他用途,只能用于每4或5个月最多更换一次。因此,在这种情况下,添加数据库似乎是过大的选择。
基本上我有“值对”,当给出相反的值时,我想使用匹配值。
最佳答案
人们通常将SQLite用于小型数据库解决方案。每当我有一些我不想在解决方案中进行硬编码的值(或太多值而无法在配置文件中实际使用)时,我都会将它们停留在一个小的数据库中。通常只有几张桌子,没什么大不了的。如果需要,您甚至可以使用Entity Framework(有一个SQLite EF提供程序)。
这不是矫kill过正。拥有MSDE或要求使用SQL Server可能会过大。 SQLite是为此而制作的。