2012-01-12 30 views
9

Tôi đã xem xét hồ sơ của mình và dường như phương pháp mở rộng LINQ Single chọn 2 hàng. Vậy tại sao phương pháp mở rộng Single LINQ tạo truy vấn Select TOP(2)? Có phải nó sẽ là select top(1) thay thế không?Tại sao phương pháp mở rộng Single LINQ tạo truy vấn Chọn TOP (2)?

+1

'Single()' nên truy vấn cho top 2; 'Đầu tiên()' * nên * chỉ truy vấn cho một. Bạn có chắc là bạn không nhìn vào truy vấn 'Single'? – Gabe

+0

@Gabe Bạn nói đúng. Tôi đã nhìn vào các truy vấn sai .. những gì một sự xấu hổ :(nhưng vẫn .. muốn biết tại sao truy vấn duy nhất cho một đầu 2? Đó là bởi vì nó cần phải biết nếu nó có nhiều hơn một kết quả? – Rushino

+2

Có, chỉ cách để biết nếu chỉ có một kết quả duy nhất là yêu cầu 2 và đảm bảo rằng bạn chỉ nhận được 1. – Gabe

Trả lời

11

First chỉ yêu cầu một kết quả duy nhất. Single yêu cầu hai kết quả vì nó chỉ trả về kết quả nếu có chính xác một thành viên của tập kết quả. Nếu có không hoặc hai (hoặc nhiều hơn hai) nó ném một ngoại lệ, vì vậy nó phải yêu cầu ít nhất hai kết quả.

Các vấn đề liên quan