關於上述和/或包括其他方法,如果您正在搜索一條記錄,並且只有一條記錄存在,哪條記錄最快?例如,我想確保一旦找到正在查詢的值,我正在尋找一個能夠立即返回而無需搜索剩餘記錄的值。FirstOrDefault(),SingleOrDefault(),Any()等等......哪一個是最快的?
回答
如果你有這個想法,你可以解決它。
FirstOrDefault
枚舉集,直到找到一個匹配的項目
SingleOrDefault
枚舉整個集合,以確保該項目只出現一次
這意味着SingleOrDefault
不能比FirstOrDefault
更快。但它確實取決於一點點的查詢提供執行
編輯:
任何能更快實現。海外商品會有一個SQL實現:
Select Top 1 from myTable //(its not quite this but this implementation but it will be similar)
將執行速度比:
Select Top 1 from myTable where <somecondition>
最後一件事,如果沒有記錄存在,返回空嗎?我「認爲」它是我用過的Single(),當沒有東西回來時拋出異常。 –
如果不存在任何記錄,則singleOrDefault和FirstOrDefault都將返回對象的默認值(在大多數情況下,該值爲null)。如果集合不包含匹配,則使用.First或.Single會引發異常 –
另請參閱... [LINQ:何時使用SingleOrDefault與FirstOrDefault並使用篩選條件](http://stackoverflow.com/q/1745691/9664)和[何時使用.First和何時使用.FirstOrDefault與LINQ?](http://stackoverflow.com/q/1024559/9664) –
單(和的SingleOrDefault)應時要強制異常,如果有0或一個以上的結果只能使用。典型的SQL實現將是
Select Top 2 * from table
另一方面,首先通常會在找到第一個匹配後短路。在TSQL中
Select Top 1 * from table
任何用於指示是否至少找到一個匹配(並找到它後發現短路)。在TSQL中,這使用Exists。
對於您的情況,由於您需要結果值,因此在創建單獨請求(使用Any)時沒有用處,然後執行Single。相反,只需使用FirstOrDefault,然後在返回結果中檢查null。
var foo = table.FirstOrDefault(t => t.bar == val);
if (null != foo)
...
選擇1,從表中已存在地方
- 1. 關於FirstOrDefault或SingleOrDefault
- 2. FirstOrDefault()||選擇()哪個更快?
- 3. 哪一個是最快的?
- 4. FirstOrDefault比SingleOrDefault顯着快於查看ANTS分析器
- 5. Vimscript是否等價於Ruby的`any?'
- 6. 哪一個是最快的方法
- 7. 在Linq中,.FirstOrDefault和.SingleOrDefault之間的區別是什麼
- 8. 哪一個更快/更好strcasecmp()或等於運算符?
- 9. 更新最早的一行,下一個最舊的一行,等等
- 10. 哪一個等同於Perl :: Tidy的Python最接近?
- 11. 確定最快的BitTorrent對等連接
- 12. 是否有一個實現快速最大等級相關估計量的庫?
- 13. Linq,是select()。SingleorDefault()是一個壞主意?
- 14. 哪個運算符是Javascript中最快的,以檢查2個值是否等於0?
- 15. 哪個是oracle查詢最快的?
- 16. 哪個是PHP中最快的?
- 17. 哪個是log4Net最快的appender?
- 18. Regex.Replace,String.Replace或StringBuilder.Replace哪個是最快的?
- 19. 如何知道哪個對等體是主對等體,哪個對等體是某個領域的輔助對等體?
- 20. 哪一個是更快
- 21. 將等於一個整數總是等於一個整數嗎?
- 22. 如何循環MultiValueMap <String,Any>類型:其中,<Any>可以是另一個MultiValueMap等
- 23. Selenium隱含的等待總是需要等待整個等待時間還是可以更快完成?
- 24. 哪一個是IBM WebSphere Portal/WCM菜單的Liferay等價物?
- 25. 是否存在Hive等價的SQL「LIKE ANY(SUBQUERY)」
- 26. 什麼是JPQL中的SQL ANY運算符等價物?
- 27. JQGrid,Telerik,DataTables等哪個好?
- 28. 哪個表達式等同?
- 29. 等效Mathematica的哪
- 30. 一個關於mysql_query的思考等等
這取決於查詢提供。 – SLaks
'Any'不返回一個值,它返回一個標誌,指示一個值是否存在。 – dasblinkenlight
Any()不會返回記錄。 FirstOrDefault可能是獲取單個記錄的最快方式,但不保證只有一個記錄。 – Blorgbeard