Keresés

Új hozzászólás Aktív témák

  • martonx

    veterán

    válasz bandi0000 #8523 üzenetére

    Ez a linq még egészen olvasmányos. Szerintem itt nagyobb baj, hogy jó eséllyel fogalmad sincs, hogy SQL-ben hogy fognád meg ezt a problémát, mit jelent a groupby, hogyan dolgozzunk halmazokkal.
    Nem szeretem ezt a fajta LINQ szintaktikát, na mindegy, közé kommenteztem, hátha így érthetőbb lesz, hogy mi - mit csinál.

    var data = //itt semmi értelme kiírni, hogy IQueryable<CreditReport> egy var bőven rövidebb
    from enrollment in _context.Enrollments.Include(x => x.Student.LastName).Include(y => y.Course.Credits)
    // a két include egy-egy sql joinnak felel meg, de rögtön szűr is, hogy csak 1-1 mezőt ad vissza
    // gyanús, hogy ez felesleges bonyolítás, mert az enrollment-nek eleve van egy Student propertyje
    // és talán Course property-je is? Ha jól van mappelve
    group enrollment.Student by enrollment.Student.Id into dateGroup //itt csak szimplán rossz a dateGroup név :D mert ez StudentId-ra groupol :D
    select new CreditReport()
    {
    FullName = dateGroup.FirstOrDefault().FirstMidName + " " + dateGroup.FirstOrDefault().LastName,
    Credits = dateGroup.FirstOrDefault().Enrollments.Sum(x => x.Course.Credits)
    };

    Selecten belül már nem kommenteztem, gondolom az triviális, hogy a group by-olt datasetből milyen adatokat veszel ki.

    Szóval én a helyedben elsőre erősen utána néznék, hogy ugyanezt szimpla SQL-ben hogyan írnád meg, és miért, mire való a join, group by. Ha az SQL hátteret már érted, akkor a LINQ-t is jobban érteni fogod, hiszen az semmi mást nem csinál, mint egy SQL parancsot ad ki, csak épp nem SQL szintaktikával, hanem C# szintaktikával megfogalmazva.

    [ Szerkesztve ]

    Én kérek elnézést!

Új hozzászólás Aktív témák