Лучший способ получить длинную ценность от объекта?

Я хотел бы знать, как лучше получить long из возвращенного значения BIGINT с сервера MSSQL через BLToolkit, что будет лучше?

long.Parse(db.Parameter("@rowCount").Value.ToString());

или же

System.Convert.ToInt64(db.Parameter("@rowCount").Value);

?

6 ответов

Я бы бросил так:

long lngVal = System.Convert.ToLong(db.Parameter("@rowCount").Value);

В этом случае я бы не приводил объект к String раньше, потому что для этого нет причин.

Я думаю, что ниже хороший способ получить данные, как вы хотели:

long longValue = 0;
if(db.Parameter("@rowCount").Value!=null)
{
    long.TryParse(db.Parameter("@rowCount").Value.ToString(), out longValue);
    //longValue: contains the actual long data
}

Поскольку исключение является очень дорогостоящим и в соответствии с приведенным выше кодом исключение обрабатывается. Так что это обеспечит лучший подход.

Спасибо

Вторая форма лучше, так как она остается длинной. Преобразование в / из строки может потенциально потерять точность из-за двоичных<->десятичных преобразований.

Одним из способов является тип приведи его из строки

((long)(db.Parameter("@rowCount").Value.ToString()))
int nRowCnt = db.GetOrdinals("@rowCount");
db.GetInt64(nRowCnt);

Использование (long)db.Parameter("@rowCount").Valueили же (long?)db.Parameter("@rowCount").Value если ваше значение может быть нулевым.

Другие вопросы по тегам