2008-12-16 2 views
2

Je suis en train de convertir certaines de mes procédures stockées à LINQ et ai des problèmes avec l'instruction Transact-SQL suivante:Essayer de faire une sous-requête dans Linq ... ayant des problèmes!

Select 
    Year(p.StartDate) As Year, 
    (Select Sum(t.Units) From Time t Where Year(t.TransactionDate) = Year(p.StartDate)) As Hours, 
    (Select Sum(i.Price) From Invoice i Where Year(i.CreatedDate) = Year(p.StartDate)) As Invoices 
From 
    Period p 
Group By 
    Year(p.StartDate) 
Order By 
    Year(p.StartDate) 

Je travaille avec LINQPad pour essayer de comprendre cela ... toute aide serait grandement apprécié!

Progress

je le suit jusqu'à présent ... juste essayer de comprendre comment convertir les requêtes sous:

from p in Periods 
group p by p.StartDate.Year into g 
orderby g.Key 
select new 
{ 
    g.Key, 
} 
+0

Pouvez-vous expliquer ce que type de problème/erreur que vous rencontrez? –

+0

J'essaie de convertir ce Linq ... c'est là que je me bats ... principalement avec les sous-requêtes. – mattruma

Répondre

5

Essayez:

from p in Periods 
group p by p.StartDate.Year into g 
orderby g.Key 
select new 
{ 
g.Key, 
Hours = (from t in Times where t.TransactionDate.Year == g.Key select t).Sum(t => t.Units), 
Invoices = (from i in Invoices where i.CreatedDate.Year == g.Key select i).Sum(i => i.Price) 
} 
+0

Cela a fonctionné! Je vous remercie! – mattruma

Questions connexes