2012-01-12 60 views
9

我在看我的分析器,似乎Linq擴展方法Single選擇2行。那麼爲什麼Single LINQ擴展方法創建一個查詢Select TOP(2)?不應該是select top(1)而是?爲什麼Single LINQ擴展方法創建查詢選擇TOP(2)?

+1

'Single()'應該查詢前2; 'First()'*應該*只查詢一個。你確定你沒有看Single-Query嗎? – Gabe 2012-01-12 02:22:05

+0

@加貝你沒錯。我正在看錯誤的查詢..真是一個恥辱:(但仍然..想知道爲什麼單個查詢頂部2?這是因爲它需要知道它是否有多個結果? – Rushino 2012-01-12 02:41:16

+2

是的,唯一的方式知道是否只有一個單一的結果是要求2,並確保你只得到1. – Gabe 2012-01-12 02:45:14

回答

11

First只請求一個結果。 Single請求兩個結果,因爲只有結果集中有一個成員才返回結果。如果有零個或兩個(或多於兩個)它會引發異常,所以它必須至少請求兩個結果。