Klasa + lIsta c#

0

Witam
Mam pytanie chciałbym utworzyć klasę w której była by lista

aby wyświetliła mi się np

Nazwa 1

  • lista
    • element 1 listy
    • element 2 listy
      Nazwa 2
  • lista
    • element 1 listy
    • element 2 listy
      itd

class File
{
public string Nazwa { get; set; }
public List<string> Lista = new List<string>();
}
public File(string Nazwaa, string Listaa)
{
Nazwa = Nazwaa;
Lista = Lista.Add(Listaa.ToString()); ????

    }

}

I druga sprawa w kodzie jak dodać coś do listy

List<File> LP = new List<File>();
LP.Add(new File(Nazwa,m.Value)); ???? - to nie działa dodaje mi tylko raz

Za pomoc z góry dziękuje

0
class File 
{
	public string Nazwa { get; set; }
	public List<String> Lista = new List<String>();
	public File(string Nazwaa, string Listaa)
	{
		this.Nazwa = Nazwaa;
		this.Lista.Add(Listaa);
	}
}
List<File> LP = new List<File>(); // to ma być zmienna globalna
LP.Add(new File(Nazwa, m.Value));
0

Napisz co chcesz osiągnąc, bo Twój kod jest lekko pomieszany. Definiujesz konstruktor poza klasą, nadajesz nieznaczące nazwy zmiennym (zmienna typu List<> nie powinna się nazywaś Lista, tylko ListaCzegośtam bo to że to lista to widać, ale nie wiadomo co chcesz w niej trzymać)

 List<file> LP = new List<file>();
LP.Add(new File(Nazwa,m.Value)) 

file jest z małej litery, wiec błąd kompilacji bo klasa nazywa sie File a nie file
co to jest m nie napisałeś...
I nie rozumiem to masz na myśli mówiąc, że dodaje się tylko raz? Wywołujesz raz metodę Add przekazując jej jedną instancję klasy File wiec ile razy chcesz zeby sie to dodało?

0

Chciałbym aby Nazwa jeśli jest taka sama to się nie zmieniała tylko żeby dodawały się wartości do Listy w przypadku kiedy Nazwa jest inna aby się dodało i znowu żeby dodawały się wartości do Listy ?

0

Chciałbym aby Nazwa jeśli jest taka sama to się nie zmieniała tylko żeby dodawały się wartości do Listy w przypadku kiedy Nazwa jest inna aby się dodało i znowu żeby dodawały się wartości do Listy ?

0

To co ty chcesz to "nadpisac" (ang.override) metod ".Add" przy listach, czyli za kazdym razem gdy ja wywolasz, kawalek kodu z logika sprawdzi czy elemnt istnieje i doda lub utworzy nowa podliste.

Mozesz sprobowac zaimplementowac swoja liste i pociagnac z IList =>http://stackoverflow.com/questions/580202/how-do-i-override-listts-add-method-in-c

lub mozesz stworzyc "managera", ktory w parametrach przyjmie obiekt i liste i on sprawdzi wszystko i zwroci nowa liste, czyli listManager.Add(element, mojaLista).

mozesz tez stworzyc nowa klase, ktora bedzie miec metode Add i te dwie listy, ale klase tworzysz raz na pcoztaku, a potem operujesz na tych listach.

0

Jak dobrze zrozumiałem to całość sprowadza się do:

Dictionary<string, List<string>>

lub

public class File
{
   private readonly List<string> _lista = new List<string>();

   public File(string nazwa)
   {
      Nazwa = nazwa;
   }

   public File(string nazwa, List<string> lista)
   {
      Nazwa = nazwa;
      _lista = lista;
   }

   public string Nazwa { get; private set; }

   public List<string> Lista
   {
      get { return _lista; }
   }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1