login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hierarchical Data

Offline xSc - 05/05/2010 16:35
Avatar van xScOnbekend Beste,

Ik ben bezig met LINQ. Nu lees ik uit mijn db een aantal groepen. Aan elke groep hangt een parentid (je hebt max. 3 niveaus):

id naam parentid
1 Groep1 0
2 Subgroep1 1
3 Subsubgroep1 2

Als parentid = 0, dan is het een hoofdgroep.

Mijn vraag is: hoe krijg ik een List terug, waarin ik die niveaus kan terugzien?

Dus zoiets:

Groep1
Subgroep1
Subsubgroep1

Dat de (sub)(sub)groepen goed onder elkaar hangen? 1 niveau lukt wel 

Voorbeeld code:

Plaatscode: 139286

Nu lees ik dus alleen de hoofdgroepen uit. Maar hoe breng ik in deze taal de niveaus aan? Dat ik dus een List krijg met (diepere) niveaus.

5 antwoorden

Gesponsorde links
Offline marten - 06/05/2010 11:39 (laatste wijziging 06/05/2010 11:40)
Avatar van marten Beheerder Ik vraag me af waarom je de database zo hebt opgebouwd, beter is het volgende:

1 groep1
2 parent1

Vullen met bv:

1 Test null
2 Sub Test2 1
3 Sub test Submenu 2
4 etc.

vervolgens maak je een recursieve functie welke alles ophaalt.
Offline cloudstrife - 06/05/2010 12:11
Avatar van cloudstrife PHP beginner Zijn tabel is toch goed? Per rij kan je via de parent_id zien onder welke andere rij hij hangt... Lijkt mij ideaal hiervoor en zie niet direct een andere manier.

In oracle heb je hiervoor een functie nm connect by prior, misschien heb je zoiets in mysql en dergelijke ook wel en anders via een recursieve functie.
Offline marten - 06/05/2010 12:27
Avatar van marten Beheerder Ah srry las het verkeerd, dacht dat het de kolomnamen waren 
Offline xSc - 07/05/2010 11:53
Avatar van xSc Onbekend Ik ben een aardig eind op weg; Maar waarom kan ik op een generic list geen .where uitvoeren? :S

Offline Abbas - 31/05/2010 00:31
Avatar van Abbas Gouden medaille

Crew .NET
Misschien omdat je het niet op de juiste manier doet? Hier is een werkend voorbeeld, gebruik makend van de Where-methode met een Lambda-expressie:

  1. public static void Main(string[] args)
  2. {
  3. List<String> subList = GetRandomList().Where(naam => naam.Contains("a")).ToList();
  4. foreach (String s in subList)
  5. Console.WriteLine(s);
  6. Console.ReadLine();
  7. //Resultaat:
  8. //vinTage
  9. //Gerard
  10. }
  11.  
  12. public static List<String> GetRandomList()
  13. {
  14. List<String> temp = new List<String>();
  15. temp.Add("titjes");
  16. temp.Add("Stijn");
  17. temp.Add("Joel");
  18. temp.Add("vinTage");
  19. temp.Add("Koen");
  20. temp.Add("Gerard");
  21. return temp;
  22. }
Bedankt door: Martijn2008
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s