如何检查var的null值?

时间:2012-05-25 11:31:32

标签: c# .net c#-4.0 .net-4.0 petapoco

我正在使用PetaPoco Micro-ORM和C#4.0。

以下代码从数据库中检索单行:

var result = db.SingleOrDefault<TdUsers>(getUserQuery);

我想检查结果是否包含任何行,以及是否为null。这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:20)

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)类型检查结合使用,就像您在此处使用的那样。

答案 1 :(得分:3)

你可以这样做:

result.ToList() // Convert result to a list

if (result.Any()) {
   // result is not null
}

答案 2 :(得分:3)

var result = db.SingleOrDefault<TdUsers>(getUserQuery);
  

在上面的代码中,SingleOrDefault将返回null值或指定的值   泛型类型(在运行时已知)。

为了检查返回的值是否为null,您只需使用

即可
if(result!=null)
{
//do your code stuff 
}
else
{
//stuff do be done in case where result==null
}

答案 3 :(得分:1)

 var v = result.ToList();

现在检查

if (v.Count > 0)