#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-это то, что я ищу.