【发布时间】:2014-09-26 10:48:19
【问题描述】:
我被困在我试图为给定用户名生成密码的情况下。
我通过用户的姓氏+名字的第一个字母,通过 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 个匹配名字怎么办?我不知道如何检查剩余的字符是否有唯一的用户名。
关于如何实现这一目标的任何想法? 提前致谢。
【问题讨论】:
-
如果一个用户的名字和姓氏与另一个用户相同,你的规则是什么?如果发生这种情况,您的应用程序将会中断。
-
您可能需要重新考虑这一点。您将无法每次都根据名字和姓氏动态生成用户名,因为您永远无法知道您可能有多少个匹配的名字。也许第一次生成一个用户名,然后相应地存储它。
-
为什么不检查它们是否是相同的用户名,然后在其上附加一个递增的数字呢?所以,第一个是“Testr”,第二个是“Testr1”,等等。
-
@JordanKaye - 您可以遍历名字的每个字符,直到有可用的开放用户名,但是,一旦您用完字符,OP 需要提供有关要求的更多信息。
-
@Ron - 是的,那会很好。我只是想确保您知道在确定这些要求之前,此代码可能会在某些时候导致问题。在名称后添加一个数字将非常容易实现。祝你好运!