Si j'ai une paire de dates, et je veux générer une liste de toutes les dates entre eux (inclus), je peux faire quelque chose comme:Exploding une plage de dates avec LINQ
System.DateTime s = new System.DateTime(2010, 06, 05);
System.DateTime e = new System.DateTime(2010, 06, 09);
var list = Enumerable.Range(0, (e - s).Days)
.Select(value => s.AddDays(value));
Ce que je Je suis coincé, c'est que j'ai une liste de paires de dates que je veux exploser dans une liste de toutes les dates entre eux. Exemple:
{2010-05-06, 2010-05-09}, {2010-05-12, 2010-05-15}
devrait se traduire par
{2010-05-06, 2010-05-07, 2010-05-08, 2010-05-09, 2010-05-12, 2010-05-13, 2010-05-14, 2010-05-15}
Notez les paires de dates sont garanties de ne pas se chevaucher.
TimeSpan.Days **! = ** TimeSpan.TotalDays http://msdn.microsoft.com/en-us/library/system.timespan.days(v=VS.100). aspx http://msdn.microsoft.com/en-us/library/system.timespan.totaldays(v=VS.100).aspx – dtb
Oui, Days! = TotalDays, mais Days est ce que je veux ici. Voyez les exemples des liens que vous avez donnés: TimeSpan (1) .Days == 0; TimeSpan (1) .TotalDays == 1,15740740740741E-12; TimeSpan (111222333444555) .Jours == 128; TimeSpan (111222333444555) .TotalDays == 128.729552597865; Dans le premier exemple, la boucle 0..0 donnerait un seul jour, ce que je veux. Dans le deuxième exemple, boucler 0..128 donnerait 129 jours, ce qui est encore ce que je veux. Je suppose que je pourrais boucler 1..ceil (128.729552597865), puis retourner à Add.Jours (valeur - 1), mais pourquoi le ferais-je? –
Juste en soulignant que l'utilisation de 'Days' casse quand les deux' DateTime' valeurs sont plus d'un mois d'intervalle les uns des autres. :) – dtb