C# 如何检查变量的空值?
我正在使用带C#4.0的PetaPoco Micro ORM 下面的代码从数据库中检索一行: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
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
}