Int32. TryParse () или (интервал?) команда. ExecuteScalar ()

ES6 решение с использованием рекурсии. Отличается от всех других решений

const range = (n, A = []) => (n === 1) ? [n, ...A] : range(n - 1, [n, ...A]);


console.log(range(5));
17
задан abatishchev 23 July 2009 в 23:10
поделиться

4 ответа

Разница между тремя показателями производительности незначительна. Узкое место - это перемещение данных из БД в ваше приложение, а не простое приведение типов или вызов метода.

Я бы сказал:

int? id = (int?)command.ExecuteScalar();
if(id.HasValue)
{
  // use id.Value
}

Он выйдет из строя раньше , если однажды люди изменят команду, чтобы вернуть строку или дату, по крайней мере, произойдет сбой, и у вас будет шанс исправить это .

Я бы также просто использовал простой int cast IF Я всегда ожидал, что команда вернет единственный результат.

Обратите внимание: я обычно предпочитаю возвращать выходной параметр, чем выполнять скаляр выполнения, скаляр выполнения кажется хрупким (соглашение о том, что первый столбец в первой строке является возвращаемым значением, мне не подходит).

22
ответ дан 30 November 2019 в 10:43
поделиться

Если вы ожидаете, что команда вернет значение null, следует помнить, что значение null базы данных ( DBNull ) не то же самое, что null в .NET. Итак, преобразование DBNull в int?

Я бы предложил следующее:

object result = command.ExecuteScalar();
int? id = (int?)(!Convert.IsDBNull(result) ? result : null);
19
ответ дан 30 November 2019 в 10:43
поделиться

Последний. Convert.ToInt32 () также является вариантом.

2
ответ дан 30 November 2019 в 10:43
поделиться

Используйте id.HasValue для максимального значения коэффициента охлаждения Nullable Type!

1
ответ дан 30 November 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: