3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
SingleOrDefault
FirstOrDefault

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
SingleOrDefault
返回類(lèi)型的默認(rèn)值(例如,int的默認(rèn)值為0) FirstOrDefault
返回類(lèi)型的默認(rèn)值。
SingleOrDefault
返回記錄 FirstOrDefault
返回記錄
SingleOrDefault
拋出異常 FirstOrDefault
返回第一條記錄
SingleOrDefault
.
FirstOrDefault

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
語(yǔ)義差異 性能差異
語(yǔ)義差異:
FirstOrDefault
返回第一項(xiàng)的潛在多個(gè)(或默認(rèn)情況下,不存在)。 SingleOrDefault
假設(shè)存在單個(gè)項(xiàng)并返回它(如果不存在則默認(rèn))。多項(xiàng)違反合同,引發(fā)異常。
性能差異
FirstOrDefault
通常情況下,它的迭代速度更快,直到找到元素為止,并且只有在找不到元素時(shí)才需要迭代整個(gè)可枚舉的元素。在許多情況下,很有可能找到一個(gè)項(xiàng)目。 SingleOrDefault
需要檢查是否只有一個(gè)元素,因此始終迭代整個(gè)枚舉。準(zhǔn)確地說(shuō),它迭代直到找到第二個(gè)元素并拋出一個(gè)異常。但在大多數(shù)情況下,沒(méi)有第二個(gè)因素。
結(jié)語(yǔ)
使用 FirstOrDefault
如果你不在乎有多少物品 或當(dāng)您無(wú)法負(fù)擔(dān)檢查唯一性時(shí)(例如,在一個(gè)非常大的集合中)。當(dāng)您檢查將項(xiàng)添加到集合時(shí)的唯一性時(shí),在搜索這些項(xiàng)時(shí)再次檢查可能太昂貴了。 使用 SingleOrDefault
如果您不需要太在意性能,并且希望確保單個(gè)項(xiàng)目的假設(shè)對(duì)讀者來(lái)說(shuō)是明確的,并在運(yùn)行時(shí)進(jìn)行檢查。
First
/ FirstOrDefault
Single
/ SingleOrDefault
- 3 回答
- 0 關(guān)注
- 939 瀏覽
添加回答
舉報(bào)