C#中的字符串引用

时间:2009-12-02 08:26:13

标签: c# string

这是我的第一篇文章。

我从数据库中选择一些数字id值的字段,例如10,20,100,110等。这些数字实际上意味着像地区这样有意义的东西。理想情况下,应该有一个查找数据库表,其中包含匹配的ID和名称字段,但是现在已经很难在合理的时间范围内实施(政治)。

我目前使用cumbesome switch函数来检查id并返回相关文本。

private string GetUnitName(string areaid)
{
    string areaName = string.Empty;
    switch (areaid.Trim())
    {
        case "10":
            areaName = "area 1";
            break;
        case "20":
            areaName = "area 2";
            break;
        case "30":
            areaName = "area 3";
            break;
    }
    return areaName ;
}

我无法将它们置于日期中,那么存储这些区域字符串的最佳方法是什么? 我可以将它们分组到设置文件中吗?

感谢您的聆听

6 个答案:

答案 0 :(得分:4)

您可以将它们存储为枚举:

public enum Areas
{
    [Description("Area 1")]
    Area1 = 10,
    [Description("Area 2")]
    Area2 = 20,
    [Description("Area 3")]
    Area3 = 30
}

Areas x = Areas.Area1;
string xName = x.ToString();

答案 1 :(得分:3)

作为一个枚举,你需要重新编译,如果你需要改变它们(取决于它们改变的频率)?

或者你可以只有一个XML文档,你可以藏在Cache和XPath中来查找id的文本?

<Areas>
  <Area id="10">Area 1</Area>
  <Area id="20">Area 2</Area>
  <Area id="30">Area 3</Area>
</Areas>

XPath: /Areas/Area[@id='<your id here>']

如果文件已更改,则将Cache Dependancy设置为过期,然后在更新文件时,您不必重新启动任何内容。为了提高速度,您可以将其作为哈希值读入内存中,这样您就不必始终对文档进行XPathing了。

答案 2 :(得分:1)

您是否可以不将它们存储在XML文件中,并在启动/数据刷新时动态加载它们。这样,您就可以创建框架以便以后更改为数据库表。

答案 3 :(得分:0)

你可以制作一个包含Id和Text的对象,你可能会找到更好的重构方法。

编辑:并将它们存储在某个地方的列表中,当然:)

答案 4 :(得分:0)

您可能需要考虑Enumeration Classes为您提供枚举的大部分好处,但仍然允许您根据需要扩展实现(例如添加自己的持久性和缓存方法,如某些建议该问题的其他答案)。

question I asked about enums中有更多信息。

答案 5 :(得分:0)

在代码存储方面,我会考虑使用Dictionary和KeyValuePair,这使得查找变得简单快捷。假设您正在谈论可以在内存中处理的大量数据。

请参阅Best implementation for Key Value Pair Data Structure?

然后您可以从文件加载商店。 XML是一种好方法,虽然如果它只是普通的ID和字符串值,那么一个简单的CSV文本文件就足够了。

如果您正在谈论大量数据,那么可能更好地研究随机访问类型的文件存储,但是这样做的时间可能会更好地用于数据库。

另一方面,如果它只是少数数据项并且保证不会改变,那么正如其他人所提到的那样,枚举就可以了。