我的数据库中有以下两个名称:SMITH
和SMITH1
如果数据库中存在名称,我想在仅SMITH
退出的情况下附加一个 1 并且如果带有数字的名称已经存在,我想增加名称的数字部分。
是否可以在一个 LINQ 语句中执行此操作?现在,我正在做:
string name = string.Format("{0}{1}{2}",first_name,middle_name,last_name).ToUpper();
//Check for duplicates
while(names.SingleOrDefault (d => d.Name== name) != null)
{
//Get last char
char lastChar = name[name.Length - 1];
//Last char is number
if(Char.IsNumber(lastChar))
{
name = name.Replace(lastChar,Convert.ToChar(Convert.ToInt32(lastChar) + 1));
}
else
{
name = (name + 1);
}
}
由于我的 while 循环中有 LINQ 查询,它是否会在每次必须循环返回时进行选择?
另外,如果有人知道一种方法可以使它更简洁但可读,那会很棒吗?
这确实适用于没有数字或 1 - 9 的名称,但是当我达到 10 时会发生什么,它只会替换最后一个字符,在这种情况下为 0,我该如何处理?
有没有办法在 LINQ 中获取数字部分,所以SMITH12
会返回12