Как проверить 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)