2011-01-10 9 views
7

Estoy utilizando una consulta LINQ como a continuación.LINQ - La secuencia no contiene elementos

object.collection.where(t => t.id.Equals("2")).First(); 

Aparece el error "La secuencia no contiene elementos". ¿Por qué el resultado arroja un error cuando el resultado no contiene elementos? ¿No debería devolver nulo cuando no se encuentran resultados? Eso es lo que sucede cuando se usa SQL.

Respuesta

5
object.collection.where(t => t.id.Equals("2")).FirstOrDefault(); 
16

Está trabajando como está diseñado. Se debe llamar al método First() cuando se sabe que se devolverá al menos una fila. Cuando este no es el caso, llame a FirstOrDefault().

+1

La razón por la que hay dos primeras variantes es para obtener excepciones específicas para facilitar la eliminación de errores. En lugar de una vaga excepción de referencia nula, obtienes una "secuencia más específica que no contiene elementos". –

Cuestiones relacionadas