Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查变量的空值?_C#_.net_C# 4.0_.net 4.0_Petapoco - Fatal编程技术网

C# 如何检查变量的空值?

C# 如何检查变量的空值?,c#,.net,c#-4.0,.net-4.0,petapoco,C#,.net,C# 4.0,.net 4.0,Petapoco,我正在使用带C#4.0的PetaPoco Micro ORM 下面的代码从数据库中检索一行: var result = db.SingleOrDefault<TdUsers>(getUserQuery); var result=db.SingleOrDefault(getUserQuery); 我想检查结果是否包含任何行,以及是否为null。最好的方法是什么 if (result == null || result.Count() == 0) { // Checks wh

我正在使用带C#4.0的PetaPoco Micro ORM

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

var result = db.SingleOrDefault<TdUsers>(getUserQuery);
var result=db.SingleOrDefault(getUserQuery);
我想检查结果是否包含任何行,以及是否为null。最好的方法是什么

if (result == null || result.Count() == 0) {
    // Checks whether the entire result is null OR
    // contains no resulting records.
}
我认为问题不在于检查
null
,因为linq是延迟加载。您的错误在于使用表达式
db.SingleOrDefault(getUserQuery)

.Single(expression)
不返回null-如果结果不返回任何值,则返回it错误。
.SingleOrDefault(expression)
但是,如果表达式不产生任何值,则返回空值,因此最好与
if(result==null)
类型检查结合使用,就像您在这里使用的那样

 var v = result.ToList();
现在检查

if (v is not null)
{

}
else if (v.Count()>0)
{


}
你可以做:

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

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

试用结果!=null,但它显示“对象引用未设置为对象的实例”。@RPK-您能在问题中发布您的代码吗。这应该行得通。或者
!result.Any()
:)NO result==null不会始终为false。。您认为任何引用类型的默认值是什么?这种方法不会在所有情况下都有效,因为
result
可能为null,在这一点上,当调用
.ToList()
.any()
时,您将得到一个
NullReferenceException
抛出。请参阅我对上述答案的评论。
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
if(result!=null)
{
//do your code stuff 
}
else
{
//stuff do be done in case where result==null
}