У меня есть следующие два имени в моей базе данных: SMITH
и SMITH1
Выберите значение и добавьте его в один оператор LINQ?
Если имя выходит в базе данных, я хочу либо присоединять к нему 1, если только SMITH
выходов и, если имя с номером уже выходит, Я хочу увеличить числовую часть имени.
Возможно ли это сделать в одном статусе LINQ? Прямо сейчас, я делаю:
string name = string.Format("{0}{1}{2}",first_name,middle_name,last_name).ToUpper();
//Check for duplicates
while(names.SingleOrDefault (d => d.Name== name) != null)
{
//Get last char
char lastChar = name[name.Length - 1];
//Last char is number
if(Char.IsNumber(lastChar))
{
name = name.Replace(lastChar,Convert.ToChar(Convert.ToInt32(lastChar) + 1));
}
else
{
name = (name + 1);
}
}
Поскольку у меня есть запрос LINQ в мое время цикла, он будет делать выбор каждый раз, когда он имеет к циклу назад вокруг?
Кроме того, если кто-нибудь знает способ сделать это более кратким, но читаемым, это было бы здорово?
Это работает для имен, которые не имеют числа или 1 - 9, но что произойдет, когда я доберусь до 10, он заменит только последний символ, в данном случае 0, как мне это сделать?
Есть ли способ, чтобы получить числовую часть в LINQ, так SMITH12
вернется 12
@TimSchmelter - 'в то время как (names.SingleOrDefault (d => d.Name == имя)! = NULL)'. Разве это не запрос LINQ? – Xaisoft
@TimSchmelter: У него есть оператор LINQ-синтаксиса как его условие 'if' в его цикле while. – Jeff
@TimSchmelter - Что он правильно назвал? – Xaisoft