查詢下面應該返回,要麼在ownerGroupIds或匹配ownerUserId提供一個匹配的ID記錄爲空參數。但是ownerUserId爲空,我希望這部分查詢被忽略。LINQ到SQL:忽略來自WHERE子句
public static int NumberUnderReview(int? ownerUserId, List<int> ownerGroupIds)
{
return (from c in db.Contacts
where
c.Active == true
&&
c.LastReviewedOn <= DateTime.Now.AddDays(-365)
&&
(// Owned by user
!ownerUserId.HasValue ||
c.OwnerUserId.Value == ownerUserId.Value
)
&&
(// Owned by group
ownerGroupIds.Count == 0 ||
ownerGroupIds.Contains(c.OwnerGroupId.Value)
)
select c).Count();
}
然而,當空傳遞在ownerUserId然後我得到以下錯誤:Nullable object must have a value.
我得到一個刺痛我可能會在這種情況下使用lambda表達式?
它看起來正確的。它一定是'c.OwnerUserId'這是抱怨。你可否確認? – Codesleuth 2010-03-26 13:54:44
我已將該子句更改爲'(c.OwnerUserId.HasValue && ownerUserId.HasValue && c.OwnerUserId.Value == ownerUserId.Value)'進行測試,而且我仍然看到相同的錯誤消息 – 2010-03-26 14:05:21
任何'c。 OwnerGroupId'爲null,因此拋出異常? – ANeves 2010-03-26 14:10:46