Как проверить var для нулевого значения?
Я использую PetaPoco Micro-ORM с С# 4.0.
В приведенном ниже коде извлекается одна строка из базы данных:
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
Я хотел бы проверить, содержит ли результат какие-либо строки, и имеет ли значение null. Каков наилучший способ сделать это?
Ответы
Ответ 1
if (result != null || result.Count() == 0) {
// Checks whether the entire result is null OR
// contains no resulting records.
}
Я думаю, что проблема не в вашей проверке на null
, потому что linq - это ленивая загрузка. Ваша ошибка заключается в использовании выражения db.SingleOrDefault<TdUsers>(getUserQuery);
.
.Single<T>(expression)
не возвращает null - это ошибки, если результат не возвращает значений.
.SingleOrDefault<T>(expression)
, однако, возвращает нулевое значение, если выражение не приводит к значениям - и поэтому лучше всего сочетается с проверкой типа if (result == null)
, как вы здесь используете.
Ответ 2
Вы можете сделать:
result.ToList() // Convert result to a list
if (result.Any()) {
// result is not null
}
Ответ 3
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
В приведенном выше коде SingleOrDefault вернет null vale или указанный общий тип (он известен во время выполнения).
Чтобы проверить, является ли возвращаемое значение нулевым или нет, вы можете просто использовать
if(result!=null)
{
//do your code stuff
}
else
{
//stuff do be done in case where result==null
}
Ответ 4
var v = result.ToList();
теперь проверьте
if (v.Count > 0)