19

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

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

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

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

4

4 回答 4

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

于 2012-05-25T11:34:25.720 回答
5
var result = db.SingleOrDefault<TdUsers>(getUserQuery);

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

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

if(result!=null)
{
//do your code stuff 
}
else
{
//stuff do be done in case where result==null
}
于 2012-05-25T11:48:04.710 回答
4

你可以这样做:

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

if (result.Any()) {
   // result is not null
}
于 2012-05-25T11:40:34.483 回答
2
 var v = result.ToList();

现在检查

if (v is not null)
{

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


}
于 2012-05-25T11:37:21.613 回答