如何使用 c# 拆分值并递增部件
本文关键字:增部 何使用 拆分 | 更新日期: 2023-09-27 18:36:17
我有以下代码:
int value = 0;
int day = 0;
int record = db.Orders.Where(x => x.Order_Date.Value.Year == DateTime.Now.Year
&& x.Order_Date.Value.Month == DateTime.Now.Month
&& x.Order_Date.Value.Day == DateTime.Now.Day).Count();
if (record > 0)
{
value = int.Parse(db.Orders.OrderByDescending(x => x.Order_Id).Select(y => y.Order_Id).First().ToString());
value += 1;
}
else
{
day = Convert.ToInt32(DateTime.Now.ToString("dd") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("yy"));
value = day + 0001;
}
我想将订单 ID 保存在ddmmyysomevalue
中,例如0501150001
如果是一阶。
我确实有上面的代码,但是如何拆分0501150001
,如050115
和0001
,然后为下一个订单递增0002
并使其0501150000
从而0501150009
0501150010
并使上面的代码有意义。
你必须将值存储在字符串中。
对于数字,您必须使用这样的格式。
int value = 1;
String finalnumber = DateTime.Now.ToString("dd") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("yy") + value.ToString("0000");
Console.WriteLine(value.ToString("0000")); // to format number only.
获取为数字
long finalnumber = Convert.ToInt64( DateTime.Now.ToString("dd") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("yy") + value.ToString("0000"));
由于您显示的代码对于订单 ID 的每个部分始终具有相同的长度,因此您可以按长度拆分并将最后一部分转换为整数。请记住,如果 orderId 的任何部分将来开始使用不同的长度,这将中断:
// get the date part of the string by length
string datePart = orderId.Substring(0, 6);
// get the count part of the string by length and cast to integer
int countPart = Int32.Parse(orderId.Substring(6, 4));
// increment the count
countPart++;
// convert the count back into a string and pad with zeroes to get length 4
string newCount = countPart.ToString().PadLeft(4, '0');
// combine with the datepart to get the new OrderId
string newOrderId = datePart + newCount;
这应该为你指明正确的方向...
int existingTodayOrdersCount = db.Orders
.Where(x => x.Order_Date.Value.Date == DateTime.Now.Date)
.Count();
string newOrderId = string.Format(
"{0:yyMMdd}{1:0000}",
DateTime.Now,
existingTodayOrdersCount + 1);
- 比较两个日期时,您可以只对
DateTime
对象调用.Date
。无需明确比较年、月和日 - 要连接数值或使用前导零设置数值的格式,您需要将其视为
string
- 上面的代码使用自定义数字格式字符串 (
0000
) 和自定义日期和时间格式字符串 (yyMMdd
)。
不过要注意微妙的错误...
- 如果您今天已经有 9999 个订单怎么办?
- 如果这段代码在午夜执行怎么办(
DateTime.Now
执行过程中可以换行到第二天吗? - 如果从数据库中删除订单记录,在这种情况下
newOrderId
可能会与现有订单冲突,该怎么办?