一个枚举的简单应用

      换了新工作,接触到了新的环境,新的项目接触到了新的知识。呵呵,新知识之一:枚举。这最基本的知识了,早都接触过,但是用的地方还不太多。仔细了解一下,发现能用到地方还真不少。

         应用场景:

         image

        像这样表单中存多选的,估计谁都遇到过,解决方法当然也很多。

        方法1:

        数据字段设成nvarchar,保存格式如 |id1|id2|id3|,我之前项目就是这样做的,完成需求绝对不成问题:提取选择 id2 的数据时,只要该字段中出现 |id2| 文字数据就OK。

        方法2:

        另外创建一个表,也就所说的一对多,表连接,提取时 inner join就行了

        方法3:

         用枚举。上代码:

          定义枚举:

   /// <summary>
    /// 企业业务类型
    /// </summary>
    [Flags]
    public enum EnumTrade
    { 
        电台广告代理 = 0x01,
        电台广告策划 = 0x02,
        节目制作 = 0x04,
        节目发行 = 0x08,
        音频制作 = 0x10,
        其他 = 0x20
    }

        对枚举位标志不太了解的可以看看  关于枚举的种种

        以此做为数据源,我们可以写一个读取的方法,读取成可以绑定到控件的数据源或者自定义实呈现。当然,文本值(text)就是Enum的Name,而标识值(value)就是Enum的Value。数据库的字段可以建一个int类型的,存储的是  id1 | id2 | id5的结果。注意此时的 | 是 按位否操作符,我们存储的结果是所选的value的按位否操作后的结果。提取选择了 id2 的数据时,执行对应字段 与 id2 执行 按位与 操作的结果不为0就行了。

         呵呵,不用多说,按位操作也是最基本的操作,比起来模糊查询或连接表,效率肯定要高很多了,并且用枚举好处也是相当多,因为一个枚举本身包含两个值,不管获取值,还是获取Name都是相当方便。对于这样的一条包含name和value的数据对象来说枚举都是相当的方便和高效。

         但是这种解决方法也不是完美的,只适合数据类型不是太多的情况。例如你的物品面向城市是可以多选的,几千个城市,嗯,还是表连接来的更实际,哈哈。

        总结:枚举是个好东西。

posted @ 2011-03-14 15:33  for certain  阅读(672)  评论(2编辑  收藏  举报