• ú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
    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
    SMOKY
    SMOKY --- ---
    RUTHAN: chatgpt is your friend :)
    RUTHAN
    RUTHAN --- ---
    Snad jednoduchy dotaz z domaciho praseni ve starym C# 2010 expressu, nacitam si csv do textovyho 2d pole.. potreboval bych pak pristupovat k jeho prvkum, pres nejaky pekne jmena sloupcu, ale nevim, jak do ty syntaxe nacitani dat ty jmena vrazit..

    Nacitam to tahle:
    1) var rows = File.ReadAllLines(OutPutFilename).Select(l => l.Split(';').ToArray()).ToArray();
    Pouzivam tahle:
    Console.WriteLine("\n Print data,16 row, 21 collumn:" + rows[15][20]); // Its from 0, 0 is header

    Nasel jsem nejaky hinty, ale tam se ty data nacitaj uplne jinym zpusobem, tak nevim jak to priohnout pro tenhle pripad.

    Potreboval bych to pouzivat nejaky aliasy pro jmena sloupcu ala, cili si je nejak pojmenovat:
    Console.WriteLine("\n Another solution, 16 row first 21 th column:" + rows[15][Region]);
    To csv uz ma hlavicku na prvnim radku se jmenama, ktery by mi stacila prepouzit nemusim nutne vymyslet novy.

    A rovnou pridam, pak bych s tim, takze replacovat nejaky idcka hodnotama z stejny tabulky/pole nejak elegatne:
    2) rekneme, ze ve sloupci 20 mam nejaky lidsky nesrozumitelny id
    v tom samy csv poli mam na radku XYZ , ktery potrebuji najit ve sloupci 5 (ten znam) to samy id a potreboval bych pro tohle id, dotahnout hodnotu ze stejnyho radku ze sloupce 7.. replacnout tu puvodni hodnotu v jiny radku v tom sloupci 20.
    Nepotrebuju nic joinovat atd, jen udelat csv citelnejsi z data, ktera uz tam jsou.. Misto VendorID 412 si tam dotahnout HorstaFuche..
    Kliknutím sem můžete změnit nastavení reklam