c# – FindAll Vs [复制]

c# – FindAll Vs [复制],第1张

概述参见英文答案 > LINQ, Where() vs FindAll()                                    4个 我有一个IEnumerable< T>我想根据LINQ谓词进行过滤.我像往常一样尝试在IEnumerable上使用Where,但这次我偶然发现了一些有趣的东西.当在IEnumerable上调用Where时,使用谓词,我得到一个空列表作为回报.我知道它必 参见英文答案 > LINQ,Where() vs FindAll()4个
我有一个IEnumerable< T>我想根据liNQ谓词进行过滤.我像往常一样尝试在IEnumerable上使用Where,但这次我偶然发现了一些有趣的东西.当在IEnumerable上调用Where时,使用谓词,我得到一个空列表作为回报.我知道它必须生成一个包含两个项目的列表.如果我改为使用具有相同谓词的FindAll,则会生成正确的结果.

任何人都可以向我解释,为什么会这样?我一直认为Where是一种懒惰的FindAll版本,它还返回了IEnumerable而不是List.它必须有更多吗? (我做了一些研究,但无济于事.)

码:

IEnumerable<VIEw> vIEws = currentProject.VIEws.Where(                    v => v.EntrIEs.Any(e => e.Type == inputType.IMAGE || e.Type == inputType.VIDEO));IEnumerable<VIEw> vIEws = currentProject.VIEws.FindAll(                    v => v.EntrIEs.Any(e => e.Type == inputType.IMAGE || e.Type == inputType.VIDEO));
解决方法 你可以在这里找到答案: LINQ,Where() vs FindAll().基本上,如果你在“Where”上调用.ToList()它们将是相同的.

您可以找到有关延期执行和立即执行之间差异的更多信息:https://code.msdn.microsoft.com/LINQ-Query-Execution-ce0d3b95

总结

以上是内存溢出为你收集整理的c# – FindAll Vs [复制]全部内容,希望文章能够帮你解决c# – FindAll Vs [复制]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存