如何检查var的null值?

RKh*_*RKh 12 .net c# .net-4.0 c#-4.0 petapoco

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

下面的代码从数据库中检索一行:

var result = db.SingleOrDefault<TdUsers>(getUserQuery);
Run Code Online (Sandbox Code Playgroud)

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

Par*_*rma 20

if (result == null || result.Count() == 0) {
    // Checks whether the entire result is null OR
    // contains no resulting records.
}
Run Code Online (Sandbox Code Playgroud)

我认为问题不在你的检查中null,因为linq是延迟加载的.您的错误在于使用表达式db.SingleOrDefault<TdUsers>(getUserQuery);.

.Single<T>(expression)不返回null - 如果结果没有返回值,则会出错. .SingleOrDefault<T>(expression)但是,如果表达式没有结果值,则返回空值 - 因此最好与if (result == null)类型检查结合使用,就像您在此处使用的那样.

  • @RPK - 您可以在问题中发布您的代码吗?这应该工作. (3认同)

小智 5

var result = db.SingleOrDefault<TdUsers>(getUserQuery);
Run Code Online (Sandbox Code Playgroud)

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

为了检查返回的值是否为空,您可以简单地使用

if(result!=null)
{
//do your code stuff 
}
else
{
//stuff do be done in case where result==null
}
Run Code Online (Sandbox Code Playgroud)