次のコードについて奇妙な問題があります。
!isActive.HasValue || (isActive.HasValue && x.IsActive == isActive.Value)
isActive
はbool?
型なので、isActive
isnull
の場合、次のエラーが発生します。
Null 許容オブジェクトには値が必要です。
それについて何か考えはありますか?ご協力いただきありがとうございます!
更新 1:
public static List<User> Select(int userId, bool? isActive = null)
{
var dl = DataLayer.GetDataContext();
return dl.Users.Where(x => x.ID == userId
&& (!isActive.HasValue || (isActive.HasValue && x.IsActive == isActive.Value))).ToList();
}
これは、このエラーが発生したサンプル関数です。私はそれがとても奇妙であることを知っています!以下のように変更すると、動作します。
!isActive.HasValue || (isActive.HasValue && x.IsActive == isActive)
このエラーの意味は理解できますが、理由がわかりません。それはうまくいくはずです。だから私はそれを奇妙なことと呼んでいます!
更新 2:
- x.IsActive は bool? ではなく bool 型です。私はそれに確信しています:)
- DataLayer.GetDataContext() は、Linq to SQL 用です。
SQL Server を使用していることが原因である可能性はありますか?
これまでご協力いただきありがとうございました。