你好
我在我的项目中要求生成顺序 ID,即从 A1001, A1002
开始,在 10,000 之后它应该从 B1001, B1002,...B10000 ,C1001..
等等。我正在使用以下 SQL 从我的数据库表中获取最大 ID
SELECT TOP 1 [ID_COLUMN]
FROM [NAME_OF_TABLE]
ORDER BY [ID_COLUMN] DESC
然后必须从我的 ASPX 页面后面的代码生成 3 个新的顺序 ID,然后再次将它们保存到表中。我查看了不同的可能性,但没有得到真正想要的东西。我尝试了下面的链接 > Auto Generate alphanumeric Unique Id with C#还有很多..但无法解决问题。
最佳答案
如果您将当前值作为字符串检索,您将有权访问 Substring 方法来提取数字部分。然后您可以使用 int.Parse 将数字部分转换为一个值,然后再递增并检查其新值。
假设当前最大值存储在“id”中,提取数值和字符前缀:
int value = int.Parse(id.Substring(1)); // 1000, 1001 ...
char prefix = id[0]; // A,B ...
要将前缀从 A 增加到 B 等,您可以使用以下代码:
prefix = (char)(prefix + 1); // A -> B ...
只需确保在增加值之前检查“Z”!
要组装新的 ID,您可以使用:
string newid = prefix + value.ToString("0000");
你需要考虑的事情:
- 处理从空表返回的空 (null/DBNull.Value) 值(将其替换为 A1001)
- 当您通过 Z10000 时会发生什么?
- 读取当前最大值、生成三个新值并将它们写回应该在一个数据库事务中完成(搜索 TransactionScope),否则如果网站流量增加,您将遇到问题,因为多个请求将尝试同时生成新值.
希望对您有所帮助!
关于c# - 生成连续的字母数字 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071108/