2012-01-12 11 views
9

Profilleyicime bakıyordum ve Linq uzantısı yöntemi Single 2 satır seçiyor gibi görünüyor. Peki, neden Single LINQ uzantı yöntemi Select TOP(2) sorgusu oluşturuyor? Bunun yerine select top(1) olması gerekmez mi?Neden Tek LINQ uzantısı yöntemi bir sorgu oluşturuyor TOP (2) seç?

+1

'Tek()', ilk 2 için sorgulamalıdır; 'First()' * * sadece bir tane için sorgulamalıdır. Tek bir sorguya bakmadığınıza emin misiniz? – Gabe

+0

@Gabe Doğru. Yanlış sorguya bakıyordum .. ne utanç verici :(ama hala .. neden bir üst 2 için tek bir sorguyu bilmek istersiniz, çünkü birden fazla sonuca sahip olup olmadığının bilinmesi gerekiyor mu? – Rushino

+2

Evet, sadece sadece tek bir sonuç olup olmadığını bilmenin yolu 2 sormak ve sadece 1 aldığınızdan emin olmaktır. – Gabe

cevap

11

First yalnızca tek bir sonuç istiyor. Single iki sonuç ister çünkü sonuç kümesinin yalnızca bir üyesi varsa, yalnızca sonuç döndürür. Sıfır veya iki (veya ikiden fazla) varsa, bir istisna atar, bu nedenle en az iki sonuç istemek zorundadır.