IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Odstranění položky z listu

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

Aktivity
Avatar
Dalibor Zeman:16.9.2022 11:29

Vytvořil jsem tento list

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineApp
{
    class Ukol{
        public int id;
        public string ukol;
        public DateTime deadline;
    }

    class Program
    {
        static void Main(string[] args)
        {
           List<string> id = new List<string>();

            id.Add("Pavel Novak");
            id.Add("Jakub Novák");
            id.Add("Petr Novak");
            id.Add("Jiří Novak");
            id.Add("Adam Novak");

            List<Ukol> ukoly = new();
            Ukol ukol = new();
            ukol.id = 1;
            ukol.ukol = "Vysat";
            ukoly.Add(ukol);

            ukol = new();
            ukol.id = 2;
            ukol.ukol = "Vyprat";

            ukoly.Add(ukol);
            ukol = new();
            ukol.id = 3;
            ukol.ukol = "Pověsit prádlo";
            ukoly.Add(ukol);


            string r = Console.ReadLine();
            string[] pole = r.Split(" ");

            Console.WriteLine(pole[0]);

            Console.WriteLine


            //Console.WriteLine(id[0]);

            //List<string> task = new();
            //task.Add(id[1]);
            //Console.WriteLine(task[1]);




        }
    }
}

Chci docílit: Snažím se odstarnit například úkol s ID 3 a nevím jak tohoto docílit.

 
Odpovědět
16.9.2022 11:29
Avatar
Odpovídá na Dalibor Zeman
Dalibor Zeman:16.9.2022 11:30

Zadaní

Cílem zadání je vytvořit konzolový TODO list s možností přidávání nových událostí, zobrazením jejich seznamu a mazaním. Dále pak uložení seznamu událostí do souboru a jeho opětovné načtení. Úkol se snaž plnit po částech, jak je rozdělen níže.

## 1. část

Cílem 1. části je vytvořit TODO list se třemi základními příkazy, pro zadaní, zobrazení a smazání. Každý úkol bude mít tři atributy, int id, string ukol a DateTime deadline. Hodnoty, které bude zadávat uživatel jsou uvedeny v hrantých závorkách.

### Příkazy

* Přidání nového úkolu s deadlinem. Novému úkolu se přiřadí id, podle kterého pak půjde smazat.
>>> add [úkol] [deadline]
* Zobrazení seznamu všech dosud přidaných úkolů. Zobrazí zadané úkoly s jejich id a deadliny, každý na nový řádek.
>>> list
* Odebrání existujícího úkolu podle id.
>>> del [id]

### Příklad

>>> add "Vysát si doma" "1.9.2022"
>>> Úkol "Vysát si doma" do 01.09.2022 úspěšně uložen s id 1.
>>> add "Nakoupit" "2.9.2022"
>>> Úkol "Nakoupit" do 02.09.2022 úspěšně uložen s id 2.
>>> list
>>> 1 | "Vysát si doma" | 01.09.2022
>>> 2 | "Nakoupit" | 02.09.2022
>>> del 1
>>> Úkol "Vysát si doma" do 01.09.2022 odstraněn.
>>> list
>>> 2 | "Nakoupit" | 02.09.2022

## 2. část

Cílem 2. části je umožnit uložení zadaných úkolů do souboru (vymysli vhodný formát) a opětovné načtení souboru. Úkoly tak půjdou uložit, ikdyž program skončí.

### Příkazy

* Uložení dosud zadaných úkolů do souboru.
>>> save [název souboru]
* Načtení úkolů se souboru.
>>> load [název souboru]
 
Nahoru Odpovědět
16.9.2022 11:30
Avatar
Wikan
Člen
Avatar
Wikan:19.9.2022 10:00

Že je to TODO list, ještě neznamená že musí být implementovaný pomocí List<Ukol>. Víc by se na to hodil Dictionary<int, Ukol>.

 
Nahoru Odpovědět
19.9.2022 10:00
Avatar
Petr Jílek
Člen
Avatar
Petr Jílek:19.9.2022 11:47

No lze i použít klasický List<Class> a použít pro nalezení konkrétní položky LINQ. Tedy např.

var item = (from u in ukoly where u.id == 1 select u).FirstOrDefault();

Zde tedy v "item" bude celá položka pro id = "Pavel Novak". I když takto pojatý koncept a generování ID je hodně vachrlatý... no a pak lze u listu "ukoly" již použít ukoly.Remove(item), atd..

 
Nahoru Odpovědět
19.9.2022 11:47
Avatar
Jan Zeman
Tvůrce
Avatar
Odpovídá na Dalibor Zeman
Jan Zeman:28.9.2022 16:03
ukoly.RemoveAll(u=>u.id == id);
Nahoru Odpovědět
28.9.2022 16:03
Čím více klidu, tím méně času.
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.