關於Linq中First、FirstOrDefault;Last、LastOrDefault等方法的說明
這里以First、FirstOrDefault進行說明,其他類似。
1、First:取序列中滿足條件的第一個元素,如果沒有元素滿足條件,則拋出異常
2、FirstOrDefault:取序列中滿足條件的第一個元素,如果沒有元素滿足條件,則返回默認值(對於可以為null的對象,默認值為null,對於不能為null的對象,如int,默認值為0)
First、FirstOrDefault的區別在於:當沒有元素滿足條件時,一個拋出異常,一個返回默認值。
因此,在使用時,一定要注意這個區別:
1、當確信序列中一定有滿足條件的元素時,使用First方法,取到元素后,無需判斷是否為null
2、當序列中可能找不到滿足條件的元素時,使用FirstOrDefault方法,然后,一定要對返回值是否為null,進行不同的處理a
關於Linq中Max、Min方法的使用
在使用Max或Min方法時,必須要保證 調用方必須至少存在一個元素,若沒有元素,則會拋出異常
如(假設ints的類型為IEnumerable
int max = ints.Max(); //當ints的個數為0時,則拋出異常
為避免這個問題,一般情況下,可以如下編寫:
int max = 0; //先設置一個默認值,即如果沒有元素時,應該取的值
if (ints.Any())
{
max = ints.Max();
}
還有一種方式是使用
DefaultIfEmpty方法:
ints.DefaultIfEmpty().Max(); //DefaultIfEmpty方法,會在ints元素個數為0時,返回一個存在唯一一個默認值元素的IEnumerable,這樣調用Max時,就不會拋異常了
ints.DefaultIfEmpty(10).Max(); //也可以指定一個默認值,即當ints元素個數為0時,返回一個存在唯一一個元素的IEnumerable,而這唯一一個元素,就是你指定的值