任何人都可以告诉我何时使用Find()和何时使用First()?如果您只是想要一个简单的查询来查找列表中的特定项目,那么一个比另一个好吗?
Jon*_*nna 10
如果列表类型的默认值(即,引用类型为null,数值类型为零,以及为其他值类型调用默认构造函数的结果)可能是正确的"找到它"结果,如果你将它与未找到它区分开来很重要,那么你需要使用First()它,因为它会在没有找到任何东西Find()的情况下抛出异常,同时返回默认值.
所以.在这种情况下你想要一个例外吗?
除了这个区别,Find()它几乎是相同的FirstOrDefault(),当它什么也没找到时它也会返回默认值.
Find()在.NET2.0中使用,因为您没有FirstOrDefault().
Find()如果它是你唯一要添加引用的东西,请使用它System.Core,虽然这不是一个大问题(它不像System.Core通常不常用,并且可用于所有框架版本).
FirstOrDefault()如果你想用一个以外的东西来调用它,请使用List<T>.FirstOrDefault()如果您可能希望L
ist<T>在将来以外的某个地方调用它,请使用.
使用,Find()如果你真的关心琐碎的性能差异,但如果你这样做,你最好编写自己的方法,旋转列表并且不使用委托.
FirstOrDefault()如果您的谓词是item => true,则使用,因为您可以调用不带谓词的表单.也就是说,list[0]无论如何你都可以使用.
FirstOrDefault()如果您将其与其他Linq混合使用,请使用,因为它会以这种方式更加一致.
尽管如此,以上都不是完全惊天动地的差异.实际上,两者之间的差异非常小,我怀疑Find()是否会FirstOrDefault()在相同的框架版本中添加.
First()返回序列中的第一个元素或满足条件的序列中的第一个元素。当序列为空时,该方法First()会引发异常。该方法搜索与条件匹配的元素。如果未找到搜索元素,则返回type 的默认值。Find()T
一些很酷的 SO 线程:
| 归档时间: |
|
| 查看次数: |
3587 次 |
| 最近记录: |