【发布时间】:2013-02-26 18:34:27
【问题描述】:
我知道这可以通过几乎无穷无尽的解决方案来完成。但我正在寻找最实用的方法。
我有很多次需要这种东西:
允许用户输入邮政编码,然后将邮政编码与预定义的州相匹配。 允许用户从 ComboBox 中选择国家名称,然后将国家名称与国家代码匹配。 带有颜色的名称,带有价格的物品,带有时间的位置,我可以继续。
到目前为止,我已经做了几种方法
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,使用数据库:
@"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 个月更换一次。因此,在这种情况下,添加数据库似乎有点过头了。
基本上我有值对,当给出相反的值时我想使用匹配的值。
【问题讨论】:
-
这是 ASP.NET MVC 还是 ASP.NET webforms 或其他东西(WPF)
-
您需要创建一个城市、州、邮编表。在实际上有一个 Web 服务允许您使用它之前,我已经这样做了,然后您可以将这些值存储在您自己的数据库..也使用BindingList绑定下拉框..
-
除了邮政编码来说明问题外,您所描述的只是枚举数。您也可以使用数据库,如果您使用 EF,只需使用 T4 表将类型表映射到枚举。
-
@ DJ KRAZE 它的含义远不止只是城市、州、邮编,如问题所述,它可能是带有颜色的名称、带有价格的物品、带有时间的位置、带有国家代码的国家。并且网络服务不适用于我正在寻找的每个配对组合。
-
您能否重新表述有关 ifs 的问题,因为它似乎并不清楚。关于数据库问题,如果你存储的数据很少,你可以使用 CSV 格式。
标签: c# winforms performance linq