繁体   English   中英

自动生成的ID与我制作的字符

[英]Auto generated id with character i made

string SetTeacherId()
    {
        char digit = 'T';
        string id = "";
        var count = db.Teachers.Count();
        if (count > 0)
        {
            var str = db.Teachers.OrderByDescending(a => a.TeacherID).Select(a => a.TeacherID).First();
            string digits = new string(str.Where(char.IsDigit).ToArray());
            string letters = new string(str.Where(char.IsLetter).ToArray());
            int numbers;
            if (!int.TryParse(digits, out numbers))
            {

            }
            id += letters + (++numbers).ToString("D4");

            return id;
        }
        else
            return digit +"0001";
    }

在这里,我创建了一个名为SetTeacherId的方法。 老实说,这是我上司做的。 教师ID将自动递增。 有人可以制作出更简单的代码来自动生成id的原因,因为它有点混乱。

首先,解释一下表中的ID数据类型会很不错。

我们只能假设您使用NVARCHAR(x)表示ID。

我不确定是否可以更改表,但可以将ID列设置为IDENTITY和数字数据类型,然后在其中定义种子(起始值)和增量步长(更大)下一个值将是),然后让DataBAse管理系统处理它。 示例: DBA Stackexchange主题

但是由于您从事的是C#开发,因此我假设您宁愿使用编程方法。 函数的作用是,根据前一个ID和最后一个数字中使用的字母创建一个简单的哈希,将其加1并加以填充,使其包含4位数字(因此ToString函数中的D4

例如: Teacher0001 Teacher0002 Teacher0003 ... Teacher9999

为了简化起见,您可以将ID设置为数字数据类型,读取最大的ID,然后递增1,然后插入其他值。 通常,ID是数字的,并不是真正的描述性的,因为ID应该用于机器(而不是人类)来快速理解它们。

但是让数据库处理它更简单,更干净,就像我在第三段中描述的那样。

我认为代码已经很清楚了。

var str = db.Teachers.OrderByDescending(a => a.TeacherID).Select(a => a.TeacherID).First();

此语句获得最大的教师ID。

string digits = new string(str.Where(char.IsDigit).ToArray());

该语句获取id的数字部分。

int.TryParse(digits, out numbers)

该语句将数字字符串解析为int。

id += letters + (++numbers).ToString("D4");

该语句通过字母前加加一个数字来创建新的id字符串。 我能给出的唯一建议是在if块中添加错误处理程序。

如果一个解释可能是答案,那是我的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM