C# / Asp.Net MVC 3 / Kako spojit dvije List-e u jednu?

Pozdrav!
Radim sa C# - Asp.Net MVC 3.
Zelim spojit dvije liste u jednu - ali mi bas i neide. Dolje nize sam stavio kod pa da vidite kako to izgleda.
U bazi tj., tablici atribute koje izvlacim su: “Kategorija_ID, Pod_Kateg_ID, Naziv, Jel_Kategorija” i imam isto tako njihove property-e u mvc model-u koji je nazvan Kategorije.
Kategorija_ID i Pod_Kateg_ID su tipa int, Naziv = nvarchar/string a Jel_Kategorija = bit/bool.

Pokusao sam napraviti sql ( ms sql ) select koji bi vratio gotovi rezultat - sve kategorije sa pripadajucim podKategorijama. Sad, jedino da u tom HomeController-u sve strpam u StringBuilder i onda samo njega posaljem - ali to mi se bas i ne dopada ili jednostavno sve povucem iz baze u jednu listu i nju stavim da mi posalje u View i da tamo napravim nekakav sort?

Ovaj dio kod-a je iz HomeController-a:

    public ActionResult Forum()
    {
        List<Kategorija> lst_kateg = new List<Kategorija>();
        List<Kategorija> lst_podKateg = new List<Kategorija>();
        lst_categ = KategorijaDAL.Select_All_Category();
        Kategorija k = new Kategorija();
        for (int i = 0; i <= lst_kateg.Count; i++)
        {
            k = lst_kateg[i];
            lst_podKateg = KategorijaDAL.Select_Subcategory_by_Kateg_ID(k.Kategorija_ID);
            foreach (Kategorija kat in lst_podKateg)
            {
                //izlistaj pod_kategorije
            }
        }
        return View("Forum", .....); /* da tu jednostavno strpam listu u kojoj bi bile sve kategorije i podKategorije?*/
    }

Jedan od pokusaja…

    public ActionResult Forum()
    {
        List<Kategorija> lst_categ = new List<Kategorija>();
        List<Kategorija> lst_subCateg = new List<Kategorija>();
       [b] List<Kategorija> lst_Hrpa = new List<Kategorija>();[/b]

        lst_categ = KategorijaDAL.Select_All_Category();
        Kategorija k = new Kategorija();
        for (int i = 0; i <= lst_categ.Count; i++)
        {
            [b]lst_Hrpa.Add(lst_categ[i]);[/b]
            k = lst_categ[i];
            lst_subCateg = KategorijaDAL.Select_Subcategory_by_Kateg_ID(k.Kategorija_ID);
            for (int j = 0; j <= lst_subCateg.Count; j++)
            {
                [b]lst_Hrpa.Add(lst_subCateg[j]);[/b]
            }
        }
        return View("Forum",[b] lst_Hrpa[/b]);
    }

[quote=“Dudek”]Jedan od pokusaja…

    public ActionResult Forum()
    {
        List<Kategorija> lst_categ = new List<Kategorija>();
        List<Kategorija> lst_subCateg = new List<Kategorija>();
        List<Kategorija> lst_Hrpa = new List<Kategorija>();

        lst_categ = KategorijaDAL.Select_All_Category();
        Kategorija k = new Kategorija();
        for (int i = 0; i [b]<[/b] lst_categ.Count; i++)
        {
            lst_Hrpa.Add(lst_categ[i]);
            k = lst_categ[i];
            lst_subCateg = KategorijaDAL.Select_Subcategory_by_Kateg_ID(k.Kategorija_ID);
            for (int j = 0; j [b]<[/b] lst_subCateg.Count; j++)
            {
                lst_Hrpa.Add(lst_subCateg[j]);
            }
        }
        return View("Forum",lst_Hrpa);
    }[/quote]

Ovo je rijesenje ali u oba dvije for petlje ispred znaka manje terbao sam samo maknuti znak jednakosti.
Ako gosp.Admin zeli obrisati ovu temu - ok :slight_smile: Ako ne, volio bih ako netko moze “dat” rijesenje putem sql upita ili neku “natuknicu” kako bi to od prilike trebalo izgledat.

Pozdrav,
probaj samo malo pojasniti šta bi tocno htio izvuci iz baze?
"SELECT Kategorija_ID, Pod_Kateg_ID, Naziv, Jel_Kategorija FROM ime_tablice"
ili sam ja krivo shvatio

Poslao si View, ali nisi poslao ono najbitnije, a to je kako ti izgledaju modeli.

Mozes dovuci sve iz baze, posloziti kategorije u memoriji, i poslati to u View.
Makni onaj bool property.
Preimenuj Pod_Kat_ID u ParentID, jerbo se to tako radi inace :wink: Neka bude nullable int.
Znaci db shema je ovo: ID, ParentID, Name. To je sve sta ti treba.
Sve kategorije koje imaju ParentID == null pripadaju root-u.
Dodaj property List Childs { get; set; } u klasu kategorija, to ce sluziti View-u da izrenderira sve.

// kontroler
List cats = kategorijeDAO.GetAll();
foreach(var cat in cats)
{
// namjesti Child objekte svake kategorije
cat.Childs = cats.Where(x=> x.ParentID == cat.ID).ToList();
}

// posalji u View root kategorije
return View(cats.Where(x=>x.ParentID == null).ToList());

// View:
@model List

@Html.Partial(“ListaKategorija”, Model.Childs)

// Partial view ListaKategorija.cshtml, malo rekurzije:
@model List

@if(Model.Any())
{


    @foreach (var cat in Model)
    {
  • @cat.Name
    @Html.Partial(“ListaKategroija”, cat.Childs)

  • }

}

to bi trebalo raditi. Dobiti ces hijerarhisku listu kategorija, neogranicene dubine.

Da, stvarno ne treba ovaj bool ( jel_kateg ) u bazi, i da, jednostavno se stavi ParentID da je nullable i …mda. Jako dobro. Jest da cu imat kaj sad ispravljat, ali da, definitivno je bolje tako kako si predložil/napisal.
Puno hvala!


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja