Есть числовое(decimal) поле ИНН (10, 12 символов). Первые 2-а числа в ИНН - код региона.
Мне надо его превратить в строку. Если длина строки 9 или 11 символов, то дописать 0.
Можно ли это сделать сразу в выражении ToString()?
INN.ToString("#.##")
Если уже есть использование преобразования в SQL
тогда почему бы не преобразовывать сразу в string
?
К самому string
'у уже можно дописать метод расширения:
public static class MyExtention
{
public static string ToINN(this string str)
{
if (string.IsNullOrEmpty(str))
return str;
string prefix = "000";
string res = prefix + str;
return str.Length <= 9 ? res.GetLast(10) : res.GetLast(12);
}
public static string GetLast(this string source, int tail_length)
{
if (tail_length >= source.Length)
return source;
return source.Substring(source.Length - tail_length);
}
}
class Program
{
public static void Main(string[] args)
{
string inn1 = "999999999", //9
inn2 = "11111111111";//11
Console.WriteLine(string.Format("Old INN {0}(l={2}), new INN {1}(l={3})", inn1, inn1.ToINN(), inn1.Length, inn1.ToINN().Length));
Console.WriteLine(string.Format("Old INN {0}(l={2}), new INN {1}(l={3})", inn2, inn2.ToINN(), inn2.Length, inn2.ToINN().Length));
}
}
Результат работы:
Решил не использовать decimal
.
Из базы при получении данных делаю
cast(field as bigint) as INN
далее в коде
inn > 10000000000 ? inn.Value.ToString("D12") : inn.Value.ToString("D10")
Всем спасибо.
Виртуальный выделенный сервер (VDS) становится отличным выбором
На этой строке var response = clientPostAsync(APP_PATH + "/Token", content)
У меня есть 2 проекта в solutionВ одном класс, где есть private методы, которые нужно протестировать
Если нет возможности в FireBird 25 добавить констуркцию подобно MySQL то как правильнее проверять наличие создаваемой таблицы