Black friday Black friday
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě
Avatar
Ladislav Niderle:26.5.2018 21:29

Ahoj, mohl by mi někdo zase poradit jak se dá jednodušeji vyřešit následující příklad?
Původně jsem měl list objektu, který jsem potřeboval do slovníku dostat podle datu a to mi bylo vysvětleno, že se to dělá pomocí groupby. To funguje jak má, ale bbohužel se nyní dostávám znovu do problému, že jak to mám rozřazeno ve slovníku, tak se to nyní ty data snažím ještě dále třídit. v tom slovníku je první index právě datum a value je list objektu, který má několik parametrů. Já vím, že musím z toho množství parametrů to dále nějak roztřídit podle 4 parametrů tak, aby u sebe byly ty co mají tyto parametry stejné.
Příklad:
[
{opakování:"5",
forma:"bl"},
{opakovani:"5",
forma:"ag"},
{ opakovani:"4",
forma:"ac"
}
]
Pokud je více paramterů stejné, tak se seskupí a už se dále nezařadí do skupiny s menším počtem stených parametrů.

Mohl by mi prosím někdo poradit jak se to dá dělat jednodušeji, než všechny ty možnosti postupně vypsat?
Děkuji

 
Odpovědět 26.5.2018 21:29
Avatar
Odpovídá na Ladislav Niderle
Ondřej Štorc:26.5.2018 21:41

Ahoj, tak pokračujme tam kde jsme včera skončili:

class Data
{
    public DateTime ValidTo { get; }
    public string Content { get; }
    public int Number { get; }
}
//   Seskupení dat podle data validity -> Převedení na Dictionary<DateTime, List<Data>>
data.GroupBy(x => x.ValidTo).ToDictionary(x => x.Key, x => x.OrderBy(y=>y.Content).ThenBy(y => y.Number).ToList());
// OrderBy -> Seřadí podle property Content, poté podle property Number
Nahoru Odpovědět  +1 26.5.2018 21:41
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Ladislav Niderle:27.5.2018 5:29

Ahoj, i když to vypadá dobře, tak to bohužel neřeší můj problém. Jak to bylo první, tak mám nyní vytvořený slovník, kde klíčem je datum a value je list objektů. Nyní procházím slovník pomocí foreach a potřebuji nad každým záznamem udělat něco podobného jako řazení pomocí datu, ale kde klíč bude integer od 1 do třeba 100, podle toho jak to rozdělí právě díky těm dalším parametrů. Ty další parametry jsou: Opakování, Přeshraniční, Rodina, Akutní. Jedná se totiž o věc do zdravotnictví. A já potřebuji, aby byl schopen projít ten list objektů, podívat se ny tyto parametry a dát je k sobě podle počtu stejných parametrů, takže potom pod indexem 1 bude list objektů, kde jsou třeba všechny 4 parametry stejné, ale pod indexem 2 již list objektů, kde jsou jen 2 stejné parametry. A to nevím jak správně vyřešit.

 
Nahoru Odpovědět 27.5.2018 5:29
Avatar
Odpovídá na Ladislav Niderle
Ondřej Štorc:27.5.2018 9:54

Tak snad takhle:

d.GroupBy(x => x.ValidTo).ToDictionary(x => x.Key,
                    x => x.GroupBy(y=>new { y.Content, y.Number /* další vlastnosti*/ })
                        .Select(y=>y.ToList()).ToList());
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 27.5.2018 9:54
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Ladislav Niderle:27.5.2018 10:48

Jo to už je ono. Moc Ti děkuji.

 
Nahoru Odpovědět 27.5.2018 10:48
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.