如果数据库中已经存在用户名,如何使用Linq和实体框架将值更新为1



我正在使用以下代码更新登录名。但它只会附加1。但是如果这个用户名也存在呢?

string loginname=txtusername.Text;
var userRec = Context.Repoj.Users.FirstOrDefault(u => u.LoginName == loginname);
if(userRec != null)
{
loginname = loginname + "1";
}

您可以在一个循环中多次检查它:

string originalLogin = txtusername.Text;
string loginname = originalLogin;
int counter = 1;
var userRec = Context.Repoj.Users.FirstOrDefault(u => u.LoginName == loginname);
while(userRec != null)
{
loginname = originalLogin + counter;
counter++;
userRec = Context.Repoj.Users.FirstOrDefault(u => u.LoginName == loginname);
}

注意:如果有大量的用户"ankit1"ankit2"ankit3";,依此类推,循环可能会运行很长时间,甚至可能直到无穷大。您可以检查counter是否等于某个值(极端情况:int.MaxValue(并引发异常。

最新更新