我今天在我的一个 Linq-To-Entitites 查询中偶然发现了一个 null ref 异常,并想知道这怎么可能。似乎用作 OR 门的条件 OR 在 Linq-To-Entities 中没有效果。我的查询的一个简化示例是这样的:
from a in db.Articles
where a.Author == "John Doe"
&& (tag == null || a.Tags.Any(t => t.TagName == tag.TagName))
select a;
现在,当 tag 为 NULL 时,仍然会执行 where 查询的右侧,并且 tag.TagName 上会发生 NULL 引用异常。也许这是因为 Linq-To-Entities 总是将完整的语句翻译成 SQL?
无论如何......如何解决这个问题?
非常感谢 :)