как обновить значение на 1, если имя пользователя уже существует в базе данных с помощью Linq и entity framework

#c# #entity-framework #linq

Вопрос:

Я использую приведенный ниже код для обновления имени входа. Но он добавит только 1. Но что делать, если это имя пользователя также существует?

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

Комментарии:

1. «но как насчет того, что это имя пользователя также существует» — Что вы хотите, чтобы произошло? Должно ли какое-либо конечное число увеличиваться на 1?

2. например, txtusername. Текстовое значение-ankit, и ankit уже существует в базе данных, поэтому мой текущий код сгенерирует имя входа= ankit1. но я хочу, чтобы если ankit1 также существует в базе данных, то это будет ankit2 и так далее.

Ответ №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 ), и создать исключение.

Комментарии:

1. Спасибо. этот цикл while-это то, что я ищу.