Piszę eksportera Excela dla tworzonej przeze mnie aplikacji, którą mam, i mam pytanie dotyczące grupowania LINQ w C#.Jak pogrupować daty według tygodni?
Zasadniczo nowa klasa eksportera programu Excel ma dwie daty. Następnie klasa pobiera wszystkie przesyłki między tym zakresem dat.
Jako część tego eksportera muszę umieć grupować daty na tygodnie i uzyskać wartości dla tego tygodnia. Na przykład, jeśli mam dane 07/12/2011 i 22.12.2011 r. (Format dd/MM/rrrr), muszę pogrupować wszystkie przesyłki między nimi na tygodnie (każdy tydzień zaczyna się od niedzieli). Idealny wynik w powyższych datach to:
Week 1: (consignments between 04/12/2011 and 10/12/2011)
Week 2: (consignments between 11/12/2011 and 17/12/2011)
Week 3: (consignments between 18/11/2011 and 24/12/2011)
Jakieś pomysły?
przyszedłem na to pytanie, ponieważ miałem już kod, który wyglądał bardzo podobnie zaakceptowana odpowiedź. Nie podobało mi się to z tych samych powodów, o których mówisz. Ten kod jest prostszy i ułatwia segmentację dni. Dzięki! Możesz również posegmentować inny dzień tygodnia (np. Poniedziałki), dodając ten dzień do tego wyniku. – user1304444
Zmodyfiowałem sugestię w odpowiedzi (dobra odpowiedź btw), aby "przyciągnąć" datetime do najbliższego okresu. 'group by date.AddDays (((int) date.DayOfWeek) <4? (- (int) date.DayOfWeek): (- (int) date.DayOfWeek + 7))' – g2server