我们通常有些int类型字段,通过不同的数字,表示不同的意思,为了让程序可读性更高、做UI的时候更加方便,用Enum表示字段值是个不错的东西。
例如,有个sex字段,int类型,表示性别,1是男,2是女,那么数据库里面的值就是1或者2了,但是,我们把这些数据显示给客户的时候,总是需要做一些转换,类似下面这样的代码
if(user.Sex == 1) alert("性别是男"); else if(user.Sex == 2) alert("性别是女");
总是要写这样的转换代码就是很浪费时间的事情,如果用Enum类型的值,就方便多了,下面来看看怎么做
首先,修改字段的属性
首先,sex字段必须是int类型,然后默认值为0,点击Enum属性的编辑框,在里面设置每一个枚举项的值,语法是C#语法,所以也可以这样写
未设置 = 0, 男 = 1, 女 = 男 << 1, 人妖 = 男 | 女
呵呵,人妖也可以哦,他既可以是男的,也可以是女的哦,这种做法,其实是把int用二进制的角度去看待,VC的朋友应该经常会用这种手法,所以,我们在数据库里面搜索“男”的数据,就不是where data.Sex == 男 这样写了哦,而是 where (data.Sex & 男) == 男 这样写才对,这样会把 男和人妖 都选择出来
好了,编译数据库dll,到代码里实际看看怎么读写这样的字段
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace LinqTest1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } class SysDB : Test.DB.TestDB { public SysDB() : base(@"data source=""F:\SqliteLinqTest\TestDB""", EntityDB.DatabaseType.Sqlite) { } } private void Form1_Load(object sender, EventArgs e) { using (var db = new SysDB()) { //添加UserInfo表数据 var user = new Test.UserInfo(); user.UserName = "张三"; user.Sex = Test.UserInfo_SexEnum.男; db.Update(user); var user2 = new Test.UserInfo(); user2.UserName = "刘芳"; user2.Sex = Test.UserInfo_SexEnum.女; db.Update(user2); var user3 = new Test.UserInfo(); user3.UserName = "李某"; user3.Sex = Test.UserInfo_SexEnum.人妖; db.Update(user3); //select男性的数据 var table = (from m in db.UserInfo where (m.Sex & Test.UserInfo_SexEnum.男) == Test.UserInfo_SexEnum.男 select m).ToArray(); //显示每一个数据 foreach (var useritem in table) { Debug.WriteLine(string.Format("{0}是{1}" , useritem.UserName , useritem.Sex)); } /* 输出的结果: 张三是男 李某是人妖 */ } } } }
别看写代码赋值时 ,user.Sex = Test.UserInfo_SexEnum.男; 要打这么多个文字,但是熟悉VS的朋友应该清楚,user.Sex后面打完=号,再按一下空格,VS马上就提供选择项给你选择了,根本不需要打字
时间: 2024-11-06 06:06:42