2017-06-07 49 views
0

我写了下面的SQL查询,说明我想要实现:LINQ到实体分组

SELECT 
    K.id, 
    SUM(BP.pris) 
FROM Kunde K 
JOIN Booking BO ON K.id = BO.Kunde_id 
JOIN Bane_Booking BB ON BO.id = BB.Booking_id 
JOIN Banepris BP ON BO.starttid = BP.time 
WHERE BO.gratis = 0 
GROUP BY K.id; 

基本上它的检索由客户总量支出。现在我试图将这个查询转换成LINQ,因为我在我的应用程序中使用了LINQ to Entities。这是我到目前为止有:

from kunde in context.Kunde 
join booking in context.Booking on kunde equals booking.Kunde 
join banepris in context.Banepris on booking.starttid equals banepris.time 
from baneBooking in booking.Bane 
select new { Kunde = kunde, Booking = booking, BaneBooking = baneBooking, Banepris = banepris }; 

我想不过是能集团这些在同一个LINQ查询所以我没有给他们组之后手动。我将如何去实现这一目标?

我需要得到“kunde” - 对象和“banepris.pris”的总和。

回答

2

没有你的数据库,我不能对此进行测试,但是这应该是接近:

from K in context.Kunde 
join BO in context.Booking on K.id equals BO.Kunde_id 
join BP in context.Banepris on BO.starttid equals BP.time 
where BO.gratis == 0 
group new { Kunde = K, Pris = BP.pris } by K.id into g 
select new { ID=g.Key, Kunde = g.First().Kunde, Sum = g.Sum(k=>k.Pris)} 
+0

我不认为你需要一个Kundle的结果,但使用匿名类型分组是智能 –

+0

最后问题的一行表示他需要整个对象。我假设他只是在SQL中返回了ID,因为他稍后会查找该ID。 –