c# - 如果数据库中有同名记录,如何附加后缀唯一?
问题描述
我遇到了一个小问题。
产品在数据库中列出。在代码列中,数据保存如下:
“F-01、F-02、F-03、……、X-99”
客户可能希望将外部数据添加到系统中,但有时他们希望添加相同的记录。
为了避免这些重复,我需要在代码列的末尾添加一个独特的后缀,例如“-01”。
我正在用c#开发这个系统,我开发了这样一个逻辑:
int counter = 1;
var code = "F-" + productEntity.Code;
while (await uow.Repository<Product>().Query().AnyAsync(a => a.Code == code) == true)
{
code = code + "-" + counter;
counter++;
}
但我注意到,我以 F-01-1 的形式添加的记录在返回给我时会变成F-01-1-1 。
我想我错过了一个很小的点,但我无法达到我的目标。
解决方案
该表达式code + "-" + counter;
将 3 个字符串附加在一起并返回结果。
说:
code
是"F-01"
counter
是1
然后上面的表达式将被评估为:
"F-01" + "-" + "1"
, 那是"F-01-1"
如果你重新执行你的方法,那么表达式将是:
"F-01-1" + "-" + "1"
那是"F-01-1-1"
等等。
解决方法是拆分代码提取最后一部分,对应计数器的值。它是通过以下方式完成的string[] parts = "F-01-1".Split('-')
:
parts[0] = "F"
parts[1] = "01"
parts[2] = "1"
对应于计数器
所以现在int counter = int.Parse(parts[2]) + 1
将返回 counter 的下一个值2
。
你可以让你的完整代码"F-01-2"
返回code = $"{parts[0]}-{parts[1]}-{counter}"
推荐阅读
- ios - 自动登录,AppDelegate 到 SceneDelegate,UIApplication.shared.delegate 一样!AppDelegate 被替换为?
- postgresql - 在表格上生成日期直方图
- r - 过滤掉特定列上的重复数据框,用不为零的值替换所有其他列
- python - 如何在模糊图像的同时使用不同的内核形状?
- javascript - 使用 javascript/jQuery 使用 Web API
- angular - 离子重新加载空白页
- java - 证书链中证书的正确顺序(gradle build 缓存节点)
- sql-server - mssql-scripter 如何停止编写创建数据库语句的脚本并删除源数据库的引用
- python - 如何根据python中两个不同CSV文件中的空值分隔数据
- c# - 在 Tcp 通信期间使用 StreamReader