![](/img/trans.png)
[英]How to get account name and account key from a connection string or a BlobServiceClient?
[英]How to generate sequential string names like "account1", "account2" if that particular account name already exists
我有一個要求,說明如下:
"系統將驗證導入文件中的用戶名是否已在使用,並根據重復格式生成用戶名示例:如果用戶名 suesmith 正在使用,系統將使用 suesmith1 作為用戶名。如果 suesmith1 正在使用, 系統將使用 suesmith2 作為用戶名"
基本上假設在我的用戶表中,我已經有用戶 suesmith,並且我有一個 function 可以從 csv 文件導入新用戶。 如果在該文件中存在 suesmith,它的行為應該與該要求中的一樣。
我從以下開始:
var usernameFromFile = userInfoFromFile.Username;
var existingUsernames = this.accountCreationService.GetSimilarUsernamesBasedOnProvidedUsernameFromGlobal(userInfoFromFile.Username, serverInfoForGlobalDatabase, globalDatabaseName).Where(x => x.StartsWith(usernameFromFile)).ToArray();
// userInfoFromFile 是一個 object,它填充了來自文件的數據,這個 object 用於創建一個新的用戶帳戶,所以在這個 object 中我需要保存用戶名
// The function GetSimilarUsernamesBasedOnProvidedUsernameFromGlobal runs a sql query: SELECT us.Username FROM Users us where us.Username LIKE '%usernameFromFile%' and after the query that returns a string[], I've placed a Where condition to retrieve only those usernames以文件中的用戶名開頭(因此不包括 12suesmith 或 abcsuesmith 之類的用戶名)
我繼續這樣:
var usernamesInCriteria = new Dictionary<string, int?>();
///var usernamesInCriteria = new List<string>();
for (int i = 0; i < existingUsernames.Length; i++)
{
var stringAfterUsername = existingUsernames[i].Substring(usernameFromFile.Length);
int numberInUsername;
var isNumber = int.TryParse(stringAfterUsername, out numberInUsername);
if (stringAfterUsername.IsNullOrEmpty() || isNumber)
{
usernamesInCriteria.Add(existingUsernames[i], numberInUsername);
///usernamesInCriteria.Add(existingUsernames[i]); //in this list the same username (if exists) and usernames followed by numbers only will be stored
}
}
foreach (var pair in usernamesInCriteria)
{
if (pair.Key == userInfoFromFile.Username)
{
}
}
基本上,對於該現有用戶名數組中的每個用戶名,我檢查了 usernameFromFile 之后是否有一個數字 substring,如果是,則將這些現有用戶名添加到字典中(並且通過stringAfterUsername.IsNullOrEmpty()還包括現有用戶名,例如蘇史密斯)
但進一步我不確定該怎么做,因為我已經獲得了所有以數字結尾的相似用戶名。 所以我不知道如何驗證 suesmith 用戶名已經存在,如果存在,append 1 到它,然后檢查 suesmith1 是否存在,append 2 等等......如果你能告訴我如何開始!
怎么樣:
if (existingUsernames.Contains(username))
{
username = Enumerable.Range(1, Int32.MaxValue)
.Select(i => $"{username}{i}")
.Where(s => !existingUsernames.Contains(s))
.First();
}
在您現有的用戶名查詢中,您應該從LIKE '%usernameFromFile%'
中刪除第一個 % 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.