C# 4.0 で PetaPoco Micro-ORM を使用しています。
以下のコードは、データベースから 1 つの行を取得します。
var result = db.SingleOrDefault<TdUsers>(getUserQuery);
結果に行が含まれているかどうか、およびnullかどうかを確認したいと思います。これを行う最善の方法は何ですか?
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);
上記のコードでは、SingleOrDefault は null 値または指定されたジェネリック型 (実行時に認識されます) を返します。
戻り値が null かどうかを確認するには、単純に使用できます
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
}
var v = result.ToList();
今チェック
if (v is not null)
{
}
else if (v.Count()>0)
{
}