簡體   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