2012-01-12 15 views
9

Stavo guardando il mio profiler e sembra che il metodo di estensione Linq Single selezioni 2 righe. Quindi, perché il metodo di estensione LINQ Single crea una query Select TOP(2)? Non dovrebbe invece essere select top(1)?Perché il metodo di estensione Single LINQ crea una query Selezionare TOP (2)?

+1

'Single()' deve interrogare per la parte superiore 2; 'Primo()' * dovrebbe * solo interrogare per uno. Sei sicuro di non guardare una query 'Single'? – Gabe

+0

@Gabe Hai ragione. Stavo guardando la query sbagliata .. che vergogna: (ma ancora .. mi piacerebbe sapere perché la query singola per una top 2? È perché ha bisogno di sapere se ha ottenuto più di un risultato? – Rushino

+2

Sì, l'unico modo per sapere se c'è solo un singolo risultato è chiedere 2 e assicurarsi di ottenere solo 1. – Gabe

risposta

11

First richiede solo un singolo risultato. Single richiede due risultati perché restituisce un risultato solo se esiste esattamente un membro del set di risultati. Se ci sono zero o due (o più di due) lancia un'eccezione, quindi deve richiedere almeno due risultati.

Problemi correlati