puedo pensar en un montón de maneras de implementar esto, por ejemplo:
DateTime[] col = { new DateTime(2010, 1, 1),
new DateTime(2010, 1, 2),
new DateTime(2010, 1, 3),
new DateTime(2010, 1, 5)};
var start = new DateTime(2010, 1, 1);
var end = new DateTime(2010, 1, 6);
var range = Enumerable.Range(0, (int)(end - start).TotalDays + 1)
.Select(i => start.AddDays(i));
var missing = range.Except(col);
Y se podría poner el rango-cosas en una extensión-Método
public static class extensions
{
public static IEnumerable<DateTime> Range(this DateTime startDate, DateTime endDate)
{
return Enumerable.Range(0, (int)(endDate - startDate).TotalDays + 1)
.Select(i => startDate.AddDays(i));
}
}
entonces sería ser simplemente
DateTime[] col = { new DateTime(2010, 1, 1),
new DateTime(2010, 1, 2),
new DateTime(2010, 1, 3),
new DateTime(2010, 1, 5)};
var start = new DateTime(2010, 1, 1);
var end = new DateTime(2010, 1, 6);
var missing = start.Range(end).Except(col);
Pero tal vez esto no es una solución de rendimiento-alta :-)
Eso es similar a lo que estaba pensando, excepto el uso de un bucle para construir mi rango. Simplemente no me gustó la idea de crear una lista de días cada vez, ya que tengo que hacerlo mucho en silencio. –
+1 Buen uso de Range. – Thomas
Sí, el uso inteligente del rango;) –