让编号自增的操作

博客介绍了让含字母和数字的字符串编号自增的方法。先在控制器用Linq查询最大编号,经正则处理和类型转换后返回页面;再在JS部分通过POST请求和for循环实现编号自增。此外,还对比了Linq和Lambda表达式写法,指出前者适用于多表查询,后者适用于单表查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在许多情况下,我们需要让一些特殊的编号自增一个数或者多位数,比如像下面的这种情况一样,有字母和数字的的字符串让它进行自增!
在这里插入图片描述
首先在控制器部分写一个方法,通过Linq表达式查询出需要的数据,比如我这个方法上面的单据编号,注意在查询的过程中要使用倒序的排序方法(orderby tbReceiptsNum.ReceiptsID descending)以便获取到最大的数据。

比如我这里的数据有(JHD000000001和JHD000000002)两组数据,没有倒序获取到的数据是(JHD000000001)而倒序获取到的数据是(JHD000000002)。
然后就是声明一个字符串类型,你查询出来的数据中的某个字段的值,因为这里是用倒序来进行排序的,所以这里的第一个值是最大、索引为0(string list = Linq[0].ReceiptsNum;)。
再然后通过正则表达式把前面的(JHD00000000)去掉,只留下一个单独的字符串2(注意这里留下的字符串2仍然是字符串类型的)。

因为剩下的值仍然是字符串类型,所以要在去掉前面的字母的零之后就把这个字符串2转换为数字类型(这里为什么要转换呢!是因为要传回页面对这个值进行加减的操作,如果返回的是字符串类型就无法进行加减的操作)。
再把值返回回页面控制器部分的代码就完成了(try{} catch{}只是为了避免出错而进行的操作,可要可不要)
废话不多说,上代码:控制器
public ActionResult ReceiptsNum(){
try{
var Linq = (from tbReceiptsNum in myModels.PW_Receipts
orderby tbReceiptsNum.ReceiptsID descending
select tbReceiptsNum).ToList();
string list = Linq[0].ReceiptsNum;
list = Regex.Replace(list, “[\w]{11}”, “”);
var lists = Convert.ToInt32(list);
return Json(lists, JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
Console.Write(e);
return Json(“数据异常”, JsonRequestBehavior.AllowGet);
}
};
控制器操作完成之后就是JS部分了,首先一个POST后面加上所请求的控制器的方法的路径,再一个回调函数(function(returnJson){………})用来存放请求完成之后的操作,其中returnJson是控制器中所返回的值;
再然后通过一个for循环来实现功能,循环开始的条件设置为returnJson + 1(也就是从控制器中返回的值+1),限制条件为returnJson + 2(也就是从控制器中返回的值+2),比如从控制器中返回的值为2,那么开始的条件则为3,限制条件为4,也就是说for循环中的值等于3小于4的整数,再在下面给某个标签赋值的时候再把之前在控制器删掉的字母和零给拼接回来。
通过这样的方法可以实现数据每次都自增1的效果,具体需要增加多少可以根据自身实际情况的需要来更改。
JS部分:
function ReceiptsNum() {
$.post("/DayWorkManagement/PurchaseStocks/ReceiptsNum", function (returnJson)
{
for (var i = returnJson + 1; i < returnJson + 2; i++) {
$("#ReceiptsNums").val(“JHD00000000” + i);
}
})
}

另外再添加一部分Linq表达式和Lambda表达式写法的不同,以什么的Linq查询为例子:
Linq:var Linq = (from tbReceiptsNum in myModels.PW_Receipts
orderby tbReceiptsNum.ReceiptsID descending
select tbReceiptsNum).ToList();

Lambda:var Lambda = myModels.PW_Receipts.OrderByDescending(S=> S.ReceiptsID).ToList();
上面的Linq表达式和Lambda表达式所实现的功能是一样的,只是写法不同,Linq表达式比较适用于多表的联合查询,写法也较为普遍。
Lambda表达式写法比较简单、简洁,比较适用于一些简单的单表的查询和条件的筛选!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值