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