查询下面应该返回,要么在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