【发布时间】:2012-11-14 04:44:31
【问题描述】:
我最近一直在使用 LINQ,感谢一些 *ers 的帮助,我能够让这个语句正常工作:
var traceJob =
from jobDefinition in service.JobDefinitions
where jobDefinition.Id == traceGuid
select jobDefinition;
if (traceJob != null && traceJob.Count() == 1)
{
traceJob.First().RunNow();
Console.WriteLine(traceJob.First().DisplayName + " Last Run Time: " + traceJob.First().LastRunTime);
}
但是,我很困惑,因为使它工作的部分是if(traceJob.Count() ==1)。如果我删除该部分,则会收到 ObjectNullRef 错误,指出 traceJob 的枚举没有产生任何结果。
现在,据我所知,检查计数的 if 语句实际上不应该改变 Linq 语句的结果,对吧?谁能向我解释为什么我会看到这种行为?
【问题讨论】:
-
旁注:如果您只是检查存在性,将
traceJob.Count() == 1的调用替换为traceJob.Any()会执行得更好;因为如果找到一个项目,它会立即返回,而不是枚举所有项目来获取计数。
标签: c# linq sharepoint