2017-06-07 47 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。 –