wjh*_*man 6 c# linq sharepoint
我最近一直在和LINQ一起工作,感谢一些StackOverflowers的帮助,我得到了这个声明:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是,我感到很困惑,因为使它工作的那块是if(traceJob.Count() ==1).如果我删除该部分,那么我会收到一个ObjectNullRef错误,指出枚举traceJob没有产生任何结果.
现在,据我所知,if检查计数的语句实际上不应该改变Linq语句的结果吗?任何人都可以向我解释为什么我会看到这种行为?
不,它不应该.我的猜测是你遇到了枚举真的是空的情况,通过检查计数> 0,First()不会失败.
作为旁注,Any()这里可能是一个更好的检查(取决于您的存储库的底层存储)它可能比Count()以下更快:
if (traceJob != null && traceJob.Any())
{
traceJob.First().RunNow();
Console.WriteLine(traceJob.First().DisplayName + " Last Run Time: " + traceJob.First().LastRunTime);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |