Tengo una pregunta sobre la consulta LINQ. Normalmente una consulta devuelve un IEnumerable<T>
tipo. Si la devolución está vacía, no estoy seguro si es nula o no. No estoy seguro de si lo siguiente ToList()
arrojará una excepción o solo un vacío List<string>
si no se encuentra nada en el IEnumerable
resultado.
List<string> list = {"a"};
// is the result null or something else?
IEnumerable<string> ilist = from x in list where x == "ABC" select x;
// Or directly to a list, exception thrown?
List<string> list1 = (from x in list where x == "ABC" select x).ToList();
Sé que es una pregunta muy simple, pero no tengo VS disponible por el momento.
Respuestas:
Devolverá un enumerable vacío. No será nulo. Puedes dormir sonido :)
fuente
También puedes consultar el
.Any()
método:Solo una nota que
.Any
aún recuperará los registros de la base de datos; hacer una.FirstOrDefault()/.Where()
será igual de sobrecarga pero luego podrá capturar los objetos devueltos por la consultafuente
.Any()
es que solo le dirá si tiene algún registro coincidente, en absoluto, dónde hacer una consulta real para encontrar un valor específico podría ser nulo cuando.Any()
no lo es.(El volcado es de LinqPad )
fuente
Count()
también es un método, no solo la propiedad.ToList devuelve una lista vacía. (igual que la nueva Lista ());
fuente
En Linq-to-SQL, si intenta obtener el primer elemento en una consulta sin resultados, obtendrá un
sequence contains no elements
error. Les puedo asegurar que el error mencionado no es igual aobject reference not set to an instance of an object
. en conclusión no, no devolverá nulo ya que nulo no puede decirsequence contains no elements
que siempre diráobject reference not set to an instance of an object
;)fuente
Otras publicaciones aquí han dejado en claro que el resultado es un IQueryable "vacío", que ToList () cambiará correctamente para ser una lista vacía, etc.
Tenga cuidado con algunos de los operadores, ya que lanzarán si les envía un enumerable vacío. Esto puede suceder cuando los encadena juntos.
fuente
No arrojará excepciones, obtendrá una lista vacía.
fuente