一、从数据库获取到对应车型的编号最大的车辆编号
首先、先声明一个方法并接受控制器传递过来的车辆型号。声明一个string类型为空的变量returnPassengerCode用来接收返回页面的车辆编号并返回给页面。然后利用linq从数据库中的车辆表中查询出数据。在查询的时候利用group…by…在根据车辆表中的车辆型号ID来分组。然后查询出车辆型号的ID和其对应的车辆编号最大即车辆ID最大的数据。这里是根据车辆型号的ID来分组的,而key属性:返回进行分组的关键字段的值;所以这里的tbModalOfCar.Key指的就是车辆表车辆型号ID。分组之后根据车辆ID倒序排序并且第一条数据就是车辆ID最大的对应得数据。然后在从刚才查出来的数据并且连接车型表查询出车辆型号等于页面传递过来的车辆型号的数据,然后判断刚才查出来的数据的条数是否大于0,如果等于0,就说明数据库中不存在该车型对应得车辆编号,因此直接用车辆型号来拼接“00001”即可。如果大于0,就说明数据库中存在该车型对应的车辆编号。声明两个int类型的编号用来接收foreach循坏的车辆型号ID和车辆型号的长度。然后根据车辆型号ID从第一次查询出来的数据中查询出对用车辆型号的车辆编号。
二、处理查询出来的车辆编号并返回最后的车辆编号
根据上面查询出来的车辆型号的长度在刚才查询出来的车辆编号中利用Substring来提取出除了车辆型号的其他数据并用变量passengerCodeEnd来接收。然后利用正则提取出passengerCodeEnd的每一个数字并分别用变量来接收这些数字。返回的车辆编号的构成大致为车辆编号+五个相对应得数字。因此要来分别判断这五个数字,如果最后一个数字小于9,则说明车辆编号+1之后倒数第二位不会变,但是如果最后一个数字等于9并且倒数第二个数字小于9,说明车辆编号+1之后改变的数字是倒数第二个数字,然后会变得数字自增,等于9的数字为0即可,后面的一次类推。