PetaPoco Micro-ORMをC#4.0で使用しています。
以下のコードは、データベースから単一の行を取得します。
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.
}
_
Linqは遅延読み込みであるため、問題はnull
のチェックではないと思います。エラーは、式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.Count > 0)