C# 在c或vb.net中每年创建一个递增的序列号

C# 在c或vb.net中每年创建一个递增的序列号,c#,vb.net,numbers,sequence,C#,Vb.net,Numbers,Sequence,有没有办法每年创建一个序列号作为学生ID 它应该包含年份+序号 像这样:20150001/20160001 是否可能处于代码隐藏状态 任何形式的帮助都将不胜感激。您可以尝试以下内容 Dim SequenceNo as String = 'whatever you want the start number to be Dim Year as String = 'This would be set to the year Dim RequiredOutput as String = 'this w

有没有办法每年创建一个序列号作为学生ID 它应该包含年份+序号 像这样:20150001/20160001

是否可能处于代码隐藏状态


任何形式的帮助都将不胜感激。

您可以尝试以下内容

Dim SequenceNo as String = 'whatever you want the start number to be
Dim Year as String = 'This would be set to the year
Dim RequiredOutput as String = 'this would be set to the number of students you have
Dim StudentID as New List(Of String)

Do Until SequenceNo > RequiredOutput 
   StudentID.Add(Year & SequenceNo)
   SequenceNo += 1
loop

您可以创建方法来生成下一个序列号,该序列号可以是年份或入学日期,也可以是学生id,如下所示

  private static string GenerateNextSequence(DateTime addmissionDate, int studentNumber, int maxPad = 4) {
        var studentNumberString = studentNumber.ToString();
        return
            string.Format("{0}{1}{2}", addmissionDate.Year,
                (new StringBuilder()).Append('0', maxPad - studentNumberString.Length), studentNumberString);

    }

上述方法中的maxPad是最大学生数长度如果最大学生数为9999,则长度为4

最后我找到了一个简单的代码:

Function GetID() As Long
    Dim vyear As Integer = 2015
    Dim vsno As Long
    cmd1.Connection = con1
    VSQL = "select max(ID) as vID from Table"
    cmd1.CommandText = VSQL
    cmd1.Connection = conOra
    rdr1 = cmd1.ExecuteReader
    rdr1.Read()
    If rdr1.HasRows Then
        If TypeName(rdr1!vID) <> "DBNull" Then
            vsno = rdr1!vID + 1
            GetID = vyear & vsno
        Else
            GetID = vyear & "0001"
        End If
    End If
    rdr1.Close()
    con1.close()
End Function

谢谢,但我需要以4位数字=0001开始序列号,还需要从系统中获取年份。如果您使用字符串变量,您只需将字符串变量设置为0001,例如Dim SequenceNo as string=0001,年份设置为例如Dim CurrentYear as DateTime=Date.Today.year,然后将Dim year设置为string=CurrentYear.ToString再次感谢,我可以从表中选择maxStudentID来获取下一个学生ID吗?因为我不知道要注册的学生人数。我不知道你想要什么?您是否可以将RequiredOutput设置为表中的最大学生数?var sequence=Enumerable.RangeDateTime.Now.Year*10000+1500;对于500名学生和本年度?首先,我将从表中读取最后一个学生ID,如果最后一个记录例如=20150020,那么下一个ID将是:201500021..不要像ID那样将两个独立的信息粘在一起,这是糟糕的设计。任何名副其实的DB都可以生成一个抽象的自动增量ID。如果你想让学生在YYYY年注册,那么方法就是不看部分ID。也许对你来说这是一个愚蠢的想法,但我不擅长编码,我认为学生会一学期一学期地注册,我可以通过阅读ID找到2014年或2015年注册的学生人数,了解学生水平,也知道2015年开始有多少名ID学生。。当做