【问题标题】:How to allow a user to enter Value1 and then say Value1 = Value2如何让用户输入 Value1 然后说 Value1 = Value2
【发布时间】: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


【解决方案1】:

SQLite 通常是人们用于小型数据库解决方案的工具。每当我有一些我不想在解决方案中硬编码的值(或者太多以至于在配置文件中不实用)时,我都会将它们放在一个小数据库中。通常只有几张桌子,没什么大不了的。如果你愿意,你甚至可以使用实体框架(有一个 SQLite EF 提供程序)。

这并不过分。拥有 MSDE 或需要 SQL Server 将是矫枉过正。 SQLite 就是为此而生的。

【讨论】:

  • 所以你认为创建一个添加 DLL 引用的表和所有所需的代码如果是为了说 1 组 Pairs 和大约 200 种可能的组合,就不会过度杀戮吗?在这些情况下,数组或列表似乎就足够了。
  • 如果我能提供帮助,我通常会尝试将字符串和硬编码值保留在我的代码之外。设置它所需的设置开销时间是相当微不足道的,几分钟的 nu-get 引用,代码优先实体可能 10 - 15(如果你有一些经验)。无需重新编译或弄乱 app.config 即可添加和删除值的能力,无价之宝。 SQLite 可能有点复杂,硬编码可能更容易实现,但你在短期内节省的任何费用都可能会丢失。可重用性经常是游戏的名称。
  • 我目前正在为此目的使用 sqlite(因为我发布了有问题的代码)我只是觉得构建一个 10 行和 2 列的表格的小事情只是太过分了,可能会损失性能.
  • 对于小事,我想是的。对于小列表(比如
  • 你将如何使用配置文件来做到这一点我试过这样做但不能使用多维数组并且列表似乎是不可变的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多