代码段1:
Three = instance.Three.AsQueryable().Select(BMapping.expression)
以上代码段按预期工作。
代码段2:
list<string> abc = new list<string>{'a1V44000008TyEEEA0'};
list<task> t = [ SELECT Id FROM Task WHERE (whatId in :abc or Whoid in :abc)]
system.debug('-->'+t.size());
Snippet2返回一个结果,好像没有WHERE子句一样。 这背后的逻辑是什么,还是任何错误?
答案 0 :(得分:2)
第二个代码段中的查询将返回whatId
或 WhoId
等于null
或a1V44000008TyEEEA0
的所有任务记录。可能在大多数任务记录中whatId
或WhoId
为NULL或a1V44000008TyEEEA0
。
您可以执行:
list<task> t = [ SELECT Id FROM Task WHERE (whatId != NULL or Whoid != NULL)]
检查是否存在whatId
和Whoid
都不是null
的任务。