2012-01-12 50 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请求两个结果,因为只有结果集中有一个成员才返回结果。如果有零个或两个(或多于两个)它会引发异常,所以它必须至少请求两个结果。