我一直在寻找答案,但是没有找到任何有用的帮助。我遇到了这个错误:
可空对象必须具有值。
我的请求是:
from e in dc.tblElements
where
e.IsUnique &&
(e.TypeID == 2) &&
(categoryId != null ? e.CategoryId.Value == categoryId.Value : true) &&
((e.Name.Contains(keyword)) ||
(e.Keywords.Contains(keyword)))
select e
where
条件中的第三行是问题所在(categoryId
)。如果categoryId
有值,它可以工作,但当它为null
时却不能。然而,我用true
替换了这一行,它也能工作。我不明白问题出在哪里。
在我的表中,CategoryId可以为null,因此我尝试:
(categoryId.HasValue && e.CategoryId.HasValue ? e.CategoryId.Value == categoryId.Value : true)
我想做的是:根据where条件选择此表的所有元素。categoryId来自下拉菜单,因此如果在用户发出请求时仍选择默认值,则无论类别如何,我都要显示所有元素。
Where()
子句。 - Panagiotis Kanavos