NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: c# dictionary whit list

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ladislav Niderle:29.3.2016 20:37

Ahoj, potřeboval bych poradit jak správně naplnit a následně přečíst data ze slovníku.
Zde je to jak ho mám vytvořený:

Dictionary<string,List<PagesSettings>> ListPages;

Dále mám uděláno jeho new :

ListPages = new Dictionary<string, List<PagesSettings>>();

Tento řádek mám v konstruktoru

Třída PagesSettings vypadá následovně:

public class PagesSettings
    {
        public string Name;
        public string Drive;
        public string Extensions;
        public int LevelSeachr;

        public PagesSettings(string _name, string _drive, string _extensions, int _levelseachr)
        {
            Name = _name;
            Drive = _drive;
            Extensions = _extensions;
            LevelSeachr = _levelseachr;

Můj problém je v TOm, že nevím jak tam mám vložit správně data, která se zadávají přes formulář. Ještě dodám, že je to ve WFA a že ten KEY ve slovníku je GUID.
Mohl by mi někdo poradit jak ty data tam správně dát a následně jak je možné je i z toho vytáhnout?

Moc děkuji

 
Odpovědět
29.3.2016 20:37
Avatar
Ladislav Niderle:29.3.2016 20:38

U třídy PagesSettings mi chybí na konci dvě složené závorky k ukončení, tak se prosím moc nedivte, jen jsem je omylem nevzal do kopírování.

 
Nahoru Odpovědět
29.3.2016 20:38
Avatar
Odpovídá na Ladislav Niderle
sadlomaslox25:29.3.2016 20:42

tak kdyz je key GUI tak proc ho mas deklarovany jako string ?

ListPages["klic1"] = new PagesSettings(­....);

Console.Write­Line(ListPages["klic1"]­.Name);

PagesSettings vysledek;
if(ListPages.Try­GetValue("klic1", out vysledek)
Console.Write­Line(vysledek­.Name);

 
Nahoru Odpovědět
29.3.2016 20:42
Avatar
Odpovídá na sadlomaslox25
Ladislav Niderle:29.3.2016 20:58

Nebyl jelikož jsem to ani nezkusil jestli jde být, ale jde jak jsem pochopil, takže jsem to opravil, ale stále mi to nyní hlásí, že List<PagesSettings> neobsahuje konstruktor, který přebírá tento počet parametrů:4.
Ale já vidím, že tam mám vytvořený konstruktor právě na 4 vstupní parametry, ale on to nevidí.

Je možné, že problém vznikl u toho, že ve Form1 jsem si nadeklaroval ten slovník a pak jsem si ho předal do dalšího formuláře?
V tom druhým formuláři, kde se má právě provádět zápis to vypadá následovně:

public Dictionary<Guid,List<PagesSettings>> ListPages;

A následně jak mám přidávat, tak tam mám následující řádek:

ListPages[guid]=new List<PagesSettings>("první", "druhý", "třetí", 5);

Taková data se tam ukládají, ale nějak nejsem schopen pochopit proč mi to hlásí chybu.

 
Nahoru Odpovědět
29.3.2016 20:58
Avatar
Ľuboš Čurgó
Tvůrce
Avatar
Ľuboš Čurgó:29.3.2016 23:40

nechapem kde je problem. Btw ten guid by mal byt typu Guid

Dictionary<string, List<PagesSettings>> ListPages = new Dictionary<string, List<PagesSettings>>();
var guid = Guid.NewGuid().ToString();

var dataFromForm = new List<PagesSettings>() { new PagesSettings("Name", "Drive", "extension", 1) };
ListPages.Add(guid, dataFromForm);

var retrievedVaule = ListPages[guid];
Editováno 29.3.2016 23:41
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
29.3.2016 23:40
Avatar
Odpovídá na Ľuboš Čurgó
Ladislav Niderle:30.3.2016 7:23

Problém byl ve mně, že jsem nechápal jak s tím pracovat a v natvrdlosti taky.

Děkuji za pomoc s tímto.

A chtěl jsem se zeptat zda se dá pomocí LINQ nebo jiného nástroje jednoduše udělat to, aby mi ten slovník nejdříve uložil jako XML soubor a pak i načíst tento soubor do daného slovníku? Je to možné, nebo to musím procházet nějakým složitějším způsobem.

Děkuji

 
Nahoru Odpovědět
30.3.2016 7:23
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 6 zpráv z 6.