Tydzień i przekazywanie danych do wykresu

0

Cześć Piszę aplikację zbudowaną na frontendzie Angular i na backendzie .NET Core i mam taki problem. Chodzi o wykresy. Czy da radę je pogrupować tak aby był zawsze aktualny tydzień tzn że jeżeli mamy dzisiaj 6 to dane były od 30 do 6 ?. na razie mam takie coś

        public async Task<IEnumerable<DailyTenureAdd>> GetDailyTenureAdd()
        {
           var items = await db.Tenures.GroupBy(x => x.CreatedAt.Date).Select(x =>
           new DailyTenureAdd
           {
               CountTenures = x.Count(),
               CreatedAt = x.Key.ToString("dd/MM/yyyy")
           }).ToListAsync();

            return items;
        }

Tylko tutaj te dane są pogrupowane według daty stworzenia a zwracane jest data oraz ilość ile dodano w danym dniu

0

Kurcze zrobiłeś coś takiego :

            var items = new List<DailyTenureAdd>();

            for (int i = 0; i > -7; i--)
            {
                var date = DateTime.Now.AddDays(i).Date;
                var item = await db.Tenures.GroupBy(x =>date).Select(x =>
                  new DailyTenureAdd
                  {
                      CountTenures = x.Count(),
                      CreatedAt = x.Key.ToString("dd/MM/yyyy")
                  }).SingleOrDefaultAsync();

                items.Add(item);

            }

            return items;

Ale API zwraca takie coś :
https://zapodaj.net/5976f291e2f15.png.html

1

Nie wiem czy dobrze zrozumiałem, ale dlaczego akurat grupowanie? Nie lepiej:

var inputDate = new DateTime(2020,1,6);
var newDate = inputDate.AddDays(-7);
var items = db.Tenures.Where(x => x.CreatedAt <= inputDate && x.CreatedAt >= newDate);
0

Znaczy nie muszę grupować danych ? bo poradziłem sobie tak:

            var items = new List<DailyCompanyAdd>();

            for (int i = -7; i <= 0; i++)
            {
                var date = DateTime.Now.AddDays(i).Date;
                var item = await db.Companies.GroupBy(x => date).Select(x =>
                   new DailyCompanyAdd
                   {
                       CountCompanies = x.Where(z => z.CreatedAt.Date.ToString("dd/MM/yyyy") == date.Date.ToString("dd/MM/yyyy")).Count(),
                       CreatedAt = x.Key.ToString("dd/MM/yyyy")
                   }).SingleOrDefaultAsync();

                items.Add(item);
            }

            return items;
1

Nie wiem po co ci to grupowanie. Potrzebujesz wyciągnąć dane w przedziale dat, więc grupowanie tutaj nie ma sensu. Czemu porównujesz stringi?

Where(z => z.CreatedAt.Date.ToString("dd/MM/yyyy") == date.Date.ToString("dd/MM/yyyy"))

Dlaczego nie może zostać tak?

Where(z => z.CreatedAt.Date == date.Date)

1 użytkowników online, w tym zalogowanych: 0, gości: 1