gpt4 book ai didi

c# - 迭代 FirstName、LastName 以创建用户名的技术

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:30 37 4
gpt4 key购买 nike

我被困在尝试为给定用户名生成密码的情况下。

我通过用户的姓氏 + 名字的第一个字母,根据用户通过 FirstName 和 LastName 的文本框输入创建用户名。例如,如果用户的名字是“Ronald”而姓氏是“Test”,我在数据库中将用户名添加为“Testr”。但是如果我有另一个用户的相同姓氏并且名字以与数据库中现有用户相同的名字开头,我会像这样添加名字的前 2 个字母 -

if (entities.Users.Any(a => a.LastName == tbLname.Text && a.FirstName.StartsWith(fname))) 
username = (tbLname.Text + tbFname.Text.Substring(0,2)).ToLower();

现在的问题是,这仅在前 2 个字母与名字匹配时有效。如果我有 3 个甚至 4 个匹配名字怎么办?我不知道如何检查剩余字符是否具有唯一的用户名。

关于如何实现这一目标的任何想法?提前致谢。

最佳答案

如果应用程序想要避免错误,则需要从 OP 获得更多信息,但与此同时,这应该可以解决手头的问题。

//Store the first possible name.
var possibleUsername = string.Format("{0}{1}", tbLname.Text, tbFname.Text.Substring(0,1))

//Don't hit the database N times, instead get all the possible names in one shot.
var existingUsers = entities.Users.Where(u => u.Username.StartsWith(possibleUsername)).ToList();

//Find the first possible open username.
if (existingUsers.Count == 0) {
//Create the user since the username is open.
} else {
//Iterate through all the possible usernames and create it when a spot is open.
for(var i = 1; i < existingUsers.Count; i++) {
if (existingUsers.FirstOrDefault(u => u.Username == string.Format("{0}{1}", tbLname.Text, tbFname.Text.Substring(0, i))) == null) {
//Create the user since the user name is open.
}
}
}

关于c# - 迭代 FirstName、LastName 以创建用户名的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12676873/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com