1. Find方法只能在List<T>上使用,而后者能更廣泛應用在IEnemerable<T>上。
Find最終是建立在Array的查找之上,而在IEnemerable上的FirstOrDefault是使用foreach查找的。因此,Find速度會比FirstOrDefault快很多,據測試可能會快一倍以上。
2. First:取序列中滿足條件的第一個元素,如果沒有元素滿足條件,則拋出異常
3. FirstOrDefault:取序列中滿足條件的第一個元素,如果沒有元素滿足條件,則返回默認值(對於可以為null的對象,默認值為null,對於不能為null的對象,如int,默認值為0)
First、FirstOrDefault的區別在於:當沒有元素滿足條件時,一個拋出異常,一個返回默認值。
因此,在使用時,一定要注意這個區別:
1、當確信序列中一定有滿足條件的元素時,使用First方法,取到元素后,無需判斷是否為null
2、當序列中可能找不到滿足條件的元素時,使用FirstOrDefault方法,然后,一定要對返回值是否為null,進行不同的處理
參考文獻:http://blog.csdn.net/colorwaterer/article/details/41224543