tutorial sintaxis query español c# .net linq

c# - sintaxis - La secuencia de determinación no contiene ningún elemento utilizando LINQ



sintaxis linq c# (3)

Max () lanza una excepción ArgumentNullException si la fuente no tiene ningún elemento. Podría escribir un método de extensión que verifique esto y devuelva un nulo (o lo que quiera) si no hay elementos.

public static Nullable<DateTime> MaxOrNull(this IEnumerable<DateTime> source) { if (source.Count() == 0) return null; else return source.Max(); }

Posible duplicado:
LINQ: Max o Default?

Tengo algunos LINQ para filtrar vars DateTime .

List<DateTime> lst1 = new List<DateTime>(); //.... add DataTime here var d = lst1.Where(q => q <= DateTime.Now).Max();

Y si no tengo un artículo coincidente se producen las excepciones.

Necesito vaciar d o al menos null y no necesito ninguna excepción aquí.

¿Cómo puedo arreglarlo?

¡Gracias!


Me gusta:

var d = lst1.Where(q => q <= DateTime.Now).OrderByDescending(q => q.DateField).FirstOrDefault();

Esto devolverá un nulo si la lista está vacía.


Tratar

var d = lst1.Where(q => q <= DateTime.Now).DefaultIfEmpty().Max();

Su resultado ahora contendrá DateTime.MinValue si no hay coincidencias