Qué devuelve LINQ cuando los resultados están vacíos

Tengo una pregunta sobre la consulta LINQ. Normalmente, una consulta devuelve un tipo IEnumerable. Si la devolución está vacía, no estoy seguro si es nula o no. No estoy seguro de si la siguiente ToList () arrojará una excepción o solo una lista vacía si no se encuentra nada en el resultado de IEnumerable.

List list = {"a"}; // is the result null or something else? IEnumerable ilist = from x in list where x == "ABC" select x; // Or directly to a list, exception thrown? List 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.

Devolverá un enumerable vacío. No será nulo. Puedes dormir el sonido 🙂

También puedes verificar el método .Any() :

 if (!YourResult.Any()) 

Solo una nota que. .Any recuperará los registros de la base de datos; haciendo un .FirstOrDefault()/.Where() será la misma sobrecarga, pero entonces podría atrapar los objetos devueltos por la consulta

 var lst = new List() { 1, 2, 3 }; var ans = lst.Where( i => i > 3 ); (ans == null).Dump(); // False (ans.Count() == 0 ).Dump(); // True 

(Dump es de LinqPad )

.ToList devuelve una lista vacía. (igual que la nueva Lista ());

En Linq-to-SQL, si intenta obtener el primer elemento de una consulta sin resultados obtendrá la sequence contains no elements error de sequence contains no elements . Puedo asegurarle que el error mencionado no es igual a la object reference not set to an instance of an object . en conclusión no, no devolverá nulo dado que null no puede decir que la sequence contains no elements , siempre dirá object reference not set to an instance of an object 😉

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 encadenas juntos.

No arrojará excepción, obtendrá una lista vacía.