我正在使用C# 4.0的PetaPoco微ORM。
下面的代码从数据库中检索单个行:
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
我想要检查结果是否包含任何行,并且是否为空。最好的方法是什么?
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)
会返回 null 值,如果表达式没有返回值——因此最好与类似 if (result == null)
的类型检查结合使用,就像你在这里使用的一样。var result = db.SingleOrDefault<TdUsers>(getUserQuery);
if(result!=null)
{
//do your code stuff
}
else
{
//stuff do be done in case where result==null
}
result.ToList() // Convert result to a list
if (result.Any()) {
// result is not null
}
result
可能为空,此时调用 .ToList()
或 .Any()
将会抛出 NullReferenceException
。 - Troy Alford var v = result.ToList();
现在进行检查
if (v is not null)
{
}
else if (v.Count()>0)
{
}
!result.Any()
:) - nawfal