• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    PLACHOW
    PLACHOW --- ---
    Nick má vždy poněkud bulvární nadpisy :)
    URZA
    URZA --- ---
    TOOMIX: Hello everybody, I am naked 😆
    TOOMIX
    TOOMIX --- ---
    The Insane C# 13 Feature That Changes Everything
    https://www.youtube.com/watch?v=ueO5Cb3Emcw
    TOOMIX
    TOOMIX --- ---
    Swagger is Going Away in .NET 9!
    https://www.youtube.com/watch?v=8xEkVmqlr4I
    TOOMIX
    TOOMIX --- ---
    NECROMAN: super, to jsem vubec nevedel :)
    NECROMAN
    NECROMAN --- ---
    TOOMIX: Visual Studio to umí přímo built-in :)
    Paste JSON or XML as classes - Visual Studio (Windows) | Microsoft Learn
    https://learn.microsoft.com/en-us/visualstudio/ide/reference/paste-json-xml?view=vs-2022
    TOOMIX
    TOOMIX --- ---
    Kdybyste někdy potřebovali z JSONu vygenerovat třídy pro C#, tak tady je na to nástroj. Vrazíte json, vypadnou třídy.

    Convert JSON to C# Classes Online - Json2CSharp Toolkit
    https://json2csharp.com/
    FONTAN
    FONTAN --- ---
    VITI: anektodicky bych rekl, ze jako s manzelkou - casto me prekvapi.

    casto pozitivne a casto negativne (zejmena kdyz se rozhodne navrhnout nejaky sileny wall of code, ktery vubec nedava smysl)
    SAJAGI
    SAJAGI --- ---
    VITI: Jak kdy. Používám Rider Experimental + Copilot, primárně F#, a zkušenosti se dost liší podle toho, jak se celý ekosystém zrovna vyspí. I v horších dnech ale dokáže výrazně ušetřit práci. Navzdory četným memům ani ne tak v generování implementací, ale spíš v generování komentářů, analogických test casů, apod.
    VITI
    VITI --- ---
    BTW jak se vam spolupracuje s copilotem?
    TOOMIX
    TOOMIX --- ---
    RUTHAN: hodnotu dostaneš jednoduše

    string a = datatable.Rows[0]["Sloupec"].ToString()

    kde 0 je index řádku v tabulce a "Sloupec" je název slopce v datatable, případně to můžeš nahradit indexem. A do Select() metody jdou psát podmínky

    c# - Datatable select with multiple conditions - Stack Overflow
    https://stackoverflow.com/questions/1990946/datatable-select-with-multiple-conditions
    RUTHAN
    RUTHAN --- ---
    TOOMIX: Ja jsem na to koukal a ani to jsem to ted nepotreboval, takze spis ze by se mi to nekdy mohlo hodit..

    Ja tam, ale tu moznost vratit fakt jen 1 radek nikde nevidim/ nerozumim.. Aspon te tu, ktera by mi chodila, bez toho abych si to celou tu celou data table predtim nevysipat do dalsiho pole nebo neprochazel for each cyclem jako pole..

    A ty dalsi priklady, jmeno sloupce prece neni cislo radku. Nebo co mi unika?

    Mimochodem, kdyz zkusim tohle, coz taky jestli tomu spravne rozumim nejdriv vsechno nacte foreach cyclem..
    foreach (DataRow row in Sheet2.Select())
    {
    Console.WriteLine(row[0].ToString());
    Console.WriteLine(row[1].ToString());
    }
    Tak taky nedostanu cely radek, ale zda se vypis vsech hodnot z prvniho sloupce. Mozna je potreba jen tomuto selectu specifikovat spravny odelovat sloupcu? Se kterym si to ale jinak poradi, pouzivam stredik, ty aliasy z hlavicky fungujou skvele, takze tam autodetece odelovane funguje.

    Jeste jsem se na to dival..
    Kdyz se neco jmenuje row, tak bych cekal, ze to cislo v indexu je cislo radku, ktery chci.. // Ale on ve skutecnosti ten parametr znamena aspon nejakych prikladu sloupec.. ne cislo radku.. - nebo radek, kterymu dam index sloupce a vrati mi tu hodnotu v jedne jeho bunce.

    Datatable.rows - dle popisu rika, ze to vrati colleci radek - coz je mozna ten problem, collece znamena, ze je to urceny pro vic jak jeden 1 radek (slozitejsi object nez 1 string) a tim padem z toho hodnotu jednoho radku, coz je na co se ptam dostanu, az dalsich rozparsovanim.. nikoliv primo, coz je to co jsem hledal, nebo jsem si myslel, ze to puvodne dela.. oproti tomu, kdyz si ty csv data nactu jinak, do blbyho 2D textovyho pole, s radky muzu pracovat naprimo tak jsem to delal predtim, nez jsem pouzil tu datatable.
    TOOMIX
    TOOMIX --- ---
    RUTHAN:

    Ano, var x = datatable.Rows[0] vrátí první řádek. Pak už s tím děláš jen jako s x["Sloupec"].ToString() nebo x[2].ToString()

    Jestli to chceš globálně, dej si to jako statickou metodu a statickou proměnnou do statické třídy.


    Ale tohleto všechno se dá najít za pár vteřin googlení

    Get value of datarow in c# - Stack Overflow
    https://stackoverflow.com/questions/6497867/get-value-of-datarow-in-c-sharp
    RUTHAN
    RUTHAN --- ---
    Nebojte, me uz to az na 1 sloupec bez kteryho preziju funguje, takze tady uz pak zase nebudu otravovat :) Pomohli Toomix mi pomoh s tim hlavnim, ted bych to mohl jen udelat o trochu min prasacky..
    SADSOUL
    SADSOUL --- ---
    Unbook
    RUTHAN
    RUTHAN --- ---
    RUTHAN: Samozrejme muzu si to vymenovat, pres novy nacitani a zapisovani toho souboru, pokud by to jinak neslo.
    RUTHAN
    RUTHAN --- ---
    TOOMIX: To csv si muzu upravit, takze tam ty nazvy sloupcu uz mam.

    Ale porad se mi nedari dostat se k tem datum na radku, porad mi to vraci jen - System.Data.DataRow :
    Console.WriteLine("Data table: " + Sheet2.Rows[2].ToString());
    nebo
    string vyhnis = Sheet2.Rows[2].ToString();
    Console.WriteLine("Data table: " + vyhnis);
    K bunce se pres Console.WriteLine("Data table: " + Sheet2.Rows[2]["name"]); // Dostanu v pohode, cili na tom radku data jsou

    --------
    2) Pak jeste objektovy dotaz, ted mam v projektu tu metodu, pro vytvareni data table.. pak si v jiny metode vytvorim jeji objekt pres:
    DataTable Sheet2 = ConvertCSVtoDataTable(OutPutFilename);

    Ale hodilo by se mi udelat nejaky globalni DataTable object jestli to jde, tam bych mohl pres vic metod, pokud to nejde, tak si nejak mezi tema metodama jako vstupni parameter prehazovat, abych nemel dlouhej spahetgi kod.
    Mam prazdny projekt consolovou aplikaci s Mainem, zkousel jsem to dat hned po class, ale jako nejaky string.. ale tam dostavam hlasku, ze to neni staticky object.. Zkousel jsem v mainu definovat instanci:
    DlGenerator Instance = new DGenerator();
    Instance.ConvertCSVtoDataTable(OutPutFilename); // Ale to taky neni to prave.
    TOOMIX
    TOOMIX --- ---
    RUTHAN: pokud melo to csv na prvnim radku nazvy sloupcu, tak jsou i v datatable. Pokud chces radek, tak normalne

    System.Data.DataRow x = datatable.Rows[0]

    pokud chces hodnotu ze sloupce, tak bud index nebo nazev

    string val = datatable.Rows[0][3].ToString();

    nebo

    steing val = datatable.Rows[0]["Sloupec"].ToString();
    RUTHAN
    RUTHAN --- ---
    TOOMIX: Dik, akorat jsem jeste toho svyho staryho maslostroje musel pridat Referenci jinak to System.Data ani nenaslo.

    Nicmene tohle je ta cast, jak to nacist, ted jak s tim pracovat? Jestli to je elegatnejsi, zatim jsem nasel ten alias.. umim se dostat k dany bunce a vypsat si ji, ale nevim, jak se elegantne dostat k celymu radku..
    Console.WriteLine("Data table: " + Sheet2.Rows[2]["Region"]); // Bunka fajn..
    Console.WriteLine("Data table: " + Sheet2.Rows[2]); // Nefunguje dostavam jen jakou referenci na object nebo tak neco
    zkousel sem Sheet2.Rows[2][*].. ale to neni to pravy..
    TOOMIX
    TOOMIX --- ---
    RUTHAN: nacpi to do datatable a pak přes linq. Ta 3. odpověď s 59 hlasy

    c# - How to read a CSV file into a .NET Datatable - Stack Overflow
    https://stackoverflow.com/questions/1050112/how-to-read-a-csv-file-into-a-net-datatable
    Kliknutím sem můžete změnit nastavení reklam