dodání ihned! nové
Hledáme programátora do rostoucího týmu ITnetwork.cz, 100% home office, 100% flexibilní pracovní doba. Více informací
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF
Avatar
RooBoo
Člen
Avatar
RooBoo:1. srpna 11:27

Ahojte, chcel by som sa opýtať na radu. Mám

List<Report>

, kde ukladám reporty ktoré majú 2 properties. Value a Date.
V liste sú niektotré reporty ktoré majú rovnaký dátum. Ja by som potreboval ich zlúčiť.

Report1= 13 , 02.07.2021
Report2= 120 , 04.07.2021
Report3= 8 , 04.07.2021
Report4= 17 , 04.07.2021

a ja potrebujem dostať

Report1= 13 , 02.07.2021
Report2= 145 , 04.07.2021

Jedná sa mi o môj program ktorý používam v mojom servise a chcem vykresliť graf tržieb. A v jeden deň, mám viac predaja a trzby niekedy žiaden.
Viem si vyselektovať reporty z databázy za isté obdobie do listu, následne by som chcel takto spojiť jednotlivé dni a potom pomocou

foreach(report in FinallReporst)
{
        chart1.Series[""].Points.AddXY(report.Value,report.Date );
}

prejdem výsledný list.

 
Odpovědět
1. srpna 11:27
Avatar
David Flieger:2. srpna 7:51

Trochu jsem nad tím uvažoval a jedno z řešení by mohlo aspoň zhruba vypadat takto:

public List<Report> GroupByDate(List<Report> reports){
List<DateTime> usedDates = new List<DateTime>();
List<Report> grouped = new List<Report>();
int value;
for(int i = 0; i<= reports.Count; i++){
if(!usedDates.Contains(reports[i].Date)){
value =0;
for(int j = i; j <= reports.Count; j++){
if ( reports[j].Date == reports[i].Date ){
value =+ reports[j];
}
usedDates.Add(reports[i].Date);
grouped.Add(new Report(value, reports[i].Date));
}
}
}
}

Snad je to v pořádku. Případně to lze udělat jako Extension metodu.

 
Nahoru Odpovědět
2. srpna 7:51
Avatar
RooBoo
Člen
Avatar
Odpovídá na David Flieger
RooBoo:2. srpna 13:24

Ďakujem veľmi pekne za radu. Vyskúšam to.

 
Nahoru Odpovědět
2. srpna 13:24
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Ghst
Člen
Avatar
Odpovídá na RooBoo
Ghst:2. srpna 14:50

Mohl bys to řešit více způsoby:

  • co ti brání vytáhnout si to z DB již seskupené?
  • použít Dictionary s klíčem datetime, kdy si provedeš kontrolu, jestli existuje daný datum, a pokud klíč existuje, hodnotu přičteš, jiank zakládáš nový.
  • před vložením do grafu si aktuální kolekci "transformuješ" do potřebné podoby (před vložením do grafu uděláš GroupBy a Sum)
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
2. srpna 14:50
Avatar
Ghst
Člen
Avatar
Odpovídá na Ghst
Ghst:2. srpna 14:55

Například pomocí Linq seskupíš kolekci takto

var grpReporty = reporty.GroupBy(g => g.date).Select(s => new { date = s.Key.Date,value = s.Sum(x => x.value)});
Editováno 2. srpna 14:56
 
Nahoru Odpovědět
2. srpna 14:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.