2011-01-11 47 views

回答

4

區別在於它們如何處理空序列。

  • Single如果找不到元素,則會引發異常。如果找不到元素,則返回值default(T)。對於引用類型和可空值,默認值爲null。對於不可爲空的值類型,它是0或類似的。

FirstFirstOrDefault方法也有關係。以下是表格中的所有四個:

 
method   no records multiple records 
--------------------------------------------- 
Single   exception exception  
SingleOrDefault default(T) exception  
First   exception first record  
FirstOrDefault default(T) first record  

所有這些方法也有一個重載謂詞。

另一個相關的方法是DefaultIfEmpty,它允許您指定如果序列爲空時默認值應該是什麼,而不是僅僅使用該類型的默認值。

+1

`SingleOrDefault`返回可能爲'null'的默認(T)`,但例如, `int`將會是'0' – dss539 2011-01-11 20:53:31

3

單身:

返回滿足指定條件的序列的唯一元素,並且如果多於一個這樣的元素存在拋出異常。

單或默認值:

返回序列的唯一元件,或者如果序列是空的默認值;如果序列中有多個元素,則此方法會引發異常。

因此,如果您不希望該屬性/列接受NULL,則可以使用SingleOrDefault來使用默認值填充屬性/列。

1

單個將拋出一個異常,如果除了查詢的單個結果以外的任何東西。

如果您的查詢有多個結果,則SingleOrDefault只會拋出異常。如果沒有結果,您將返回一個默認值(通常爲null)。

0

如果有多個結果,則單個引發異常。 SingleOrDefault(我假設你的意思SingleOrDefault不SingleifDefault)將返回null,如果有多個結果。

1

當在Linq連接中使用時,它與SQL中的外連接有點類似。