Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako prevesti ovaj SQL upit u ekvivalentan LINQ?

[es] :: .NET :: Kako prevesti ovaj SQL upit u ekvivalentan LINQ?

[ Pregleda: 2372 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nowa
bg

Član broj: 101490
Poruke: 33
*.teletrader.com.



+1 Profil

icon Kako prevesti ovaj SQL upit u ekvivalentan LINQ?19.06.2008. u 10:50 - pre 192 meseci
Kako prevesti ovaj SQL upit u ekvivalentan LINQ?

select i.Name , sum (b.Quantum)
from Linq.dbo.Icecream i join Linq.dbo.Bill b
on i.IcecreamId = b.IcecreamID
group by i.Name, B.IcecreamID;
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Kako prevesti ovaj SQL upit u ekvivalentan LINQ?20.06.2008. u 10:57 - pre 192 meseci
Imas par nacina, najkraci i najvise u duhu L2S-a je:

Code:
var xx = from i in db.Icecreams
         select new { i.Name, suma = i.Bills.Sum(b => b.Quantum) }; 
sto generise sledeci SQL upit:

Code:
SELECT [t0].[Name], (
    SELECT SUM([t1].[Quantum])
    FROM [dbo].[Bill] AS [t1]
    WHERE [t1].[IcecreamId] = [t0].[IcecreamID]
    ) AS [suma]
FROM [dbo].[Icecream] AS [t0]



Ako bas hoces da forsiras inner join i da dobijes SQL upit kakav si naveo, onda je oblik sledeci (s tim sto se krece od tebele koja se sumira):

Code:
var xx = from b in db.Bills
         group b by b.Icecream.Name  into gb
         select new { Name = gb.Key, suma = gb.Sum(a => a.Quantum) };
sto generise sledeci skript

Code:
SELECT SUM([t0].[Quantum]) AS [suma], [t1].[Name]
FROM [dbo].[Bill] AS [t0]
INNER JOIN [dbo].[Icecream] AS [t1] ON [t1].[IcecreamID] = [t0].[IcecreamId]
GROUP BY [t1].[Name]


U oba slucaja ces dobiti isti rezultat (mozda drugacije sortiran posto nemas orderby a ova dva primera koriste razlicite tabele kao polazne)
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: Kako prevesti ovaj SQL upit u ekvivalentan LINQ?20.06.2008. u 11:16 - pre 192 meseci
I da, pretpostavke

Drugo resenje podrazumeva da su ti imena sladoleda jedinstvena, ako nisu onda mora i IcecreamId da udje u groupby, sledeci query:
Code:
var xx = from b in db.Bills
         group b by new { b.Icecream.Name, b.IcecreamId } into gb
         select new { gb.Key.Name, suma = gb.Sum(a => a.Quantum) };

sto daje sledeci sql
Code:
SELECT SUM([t0].[Quantum]) AS [suma], [t1].[Name]
FROM [dbo].[Bill] AS [t0]
INNER JOIN [dbo].[Icecream] AS [t1] ON [t1].[IcecreamID] = [t0].[IcecreamId]
GROUP BY [t1].[Name], [t0].[IcecreamId]



I poslednja pretpostavka je da su ti tabele IceCream i Bill u db kontekstu uvezane relacijom. Ako nisu mora puna forma L2S query-a:
Code:
var xx = from i in db.Icecreams
         join b in db.Bills on i.IcecreamID equals b.IcecreamId 
         group b by new { i.Name, i.IcecreamID } into gb
         select new { gb.Key.Name, suma = gb.Sum(a => a.Quantum) };

sto generise SQL:
Code:
SELECT SUM([t1].[Quantum]) AS [suma], [t0].[Name]
FROM [dbo].[Icecream] AS [t0]
INNER JOIN [dbo].[Bill] AS [t1] ON [t0].[IcecreamID] = [t1].[IcecreamId]
GROUP BY [t0].[Name], [t0].[IcecreamID]



Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

nowa
bg

Član broj: 101490
Poruke: 33
62.240.0.*



+1 Profil

icon Re: Kako prevesti ovaj SQL upit u ekvivalentan LINQ?23.06.2008. u 19:01 - pre 191 meseci
Hvala puno, uz pretpostavke radi savrseno!
 
Odgovor na temu

[es] :: .NET :: Kako prevesti ovaj SQL upit u ekvivalentan LINQ?

[ Pregleda: 2372 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.