2012-01-12 14 views
9

Estaba mirando mi generador de perfiles y parece que el método de extensión de Linq Single selecciona 2 filas. Entonces, ¿por qué el método de extensión LINQ Single crea una consulta Select TOP(2)? ¿No debería ser select top(1) en su lugar?¿Por qué el método de extensión Single LINQ crea una consulta Seleccione TOP (2)?

+1

'Single()' debería consultar para los 2 primeros; 'First()' * should * solo debe buscar uno. ¿Estás seguro de que no estás viendo una consulta 'Single'? – Gabe

+0

@Gabe Tienes razón. Estaba buscando una consulta incorrecta ... qué vergüenza :(pero aún así ... ¿me gustaría saber por qué la consulta simple para un top 2? Es porque necesita saber si obtuvo más de un resultado? – Rushino

+2

Sí, el único forma de saber si hay un solo resultado es pedir 2 y asegúrese de obtener solo 1. – Gabe

Respuesta

11

First solo solicita un único resultado. Single solicita dos resultados porque solo devuelve un resultado si hay exactamente un miembro del conjunto de resultados. Si hay cero o dos (o más de dos) arroja una excepción, por lo que debe solicitar al menos dos resultados.

Cuestiones relacionadas