19

C# 4.0 で PetaPoco Micro-ORM を使用しています。

以下のコードは、データベースから 1 つの行を取得します。

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

結果に行が含まれているかどうか、およびnullかどうかを確認したいと思います。これを行う最善の方法は何ですか?

4

4 に答える 4

27
if (result == null || result.Count() == 0) {
    // Checks whether the entire result is null OR
    // contains no resulting records.
}

nulllinq は遅延読み込みであるため、問題はチェックに含まれていないと思います。エラーは式の使用にありますdb.SingleOrDefault<TdUsers>(getUserQuery);

.Single<T>(expression)null を返さない - 結果が値を返さない場合はエラーになります。 .SingleOrDefault<T>(expression)ただし、式の結果が値にならない場合は null 値を返します。したがって、if (result == null)ここで使用しているように、型チェックと組み合わせるのが最適です。

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

上記のコードでは、SingleOrDefault は null 値または指定されたジェネリック型 (実行時に認識されます) を返します。

戻り値が null かどうかを確認するには、単純に使用できます

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 に答える