ES6 решение с использованием рекурсии. Отличается от всех других решений
const range = (n, A = []) => (n === 1) ? [n, ...A] : range(n - 1, [n, ...A]);
console.log(range(5));
Разница между тремя показателями производительности незначительна. Узкое место - это перемещение данных из БД в ваше приложение, а не простое приведение типов или вызов метода.
Я бы сказал:
int? id = (int?)command.ExecuteScalar();
if(id.HasValue)
{
// use id.Value
}
Он выйдет из строя раньше , если однажды люди изменят команду, чтобы вернуть строку или дату, по крайней мере, произойдет сбой, и у вас будет шанс исправить это .
Я бы также просто использовал простой int
cast IF Я всегда ожидал, что команда вернет единственный результат.
Обратите внимание: я обычно предпочитаю возвращать выходной параметр, чем выполнять скаляр выполнения, скаляр выполнения кажется хрупким (соглашение о том, что первый столбец в первой строке является возвращаемым значением, мне не подходит).
Если вы ожидаете, что команда вернет значение null, следует помнить, что значение null базы данных ( DBNull ) не то же самое, что null в .NET. Итак, преобразование DBNull в int?
Я бы предложил следующее:
object result = command.ExecuteScalar();
int? id = (int?)(!Convert.IsDBNull(result) ? result : null);
Последний. Convert.ToInt32 ()
также является вариантом.
Используйте id.HasValue для максимального значения коэффициента охлаждения Nullable Type!