Předvánoční Black Friday Předvánoční Black Friday
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací
Avatar
niderle.l
Člen
Avatar
niderle.l:26. května 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. května 21:29
Avatar
Odpovídá na niderle.l
Ondřej Štorc:26. května 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. května 21:41
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
niderle.l
Člen
Avatar
Odpovídá na Ondřej Štorc
niderle.l:27. května 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. května 5:29
Avatar
Odpovídá na niderle.l
Ondřej Štorc:27. května 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. května 9:54
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
niderle.l
Člen
Avatar
Odpovídá na Ondřej Štorc
niderle.l:27. května 10:48

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

 
Nahoru Odpovědět 27. května 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.