2012-12-06 69 views
1

如何寫一個linq到包含having和sub查詢的實體查詢? 例如:linq與有和子查詢

SELECT * 
FROM dbo.Gavahi g 
WHERE g.id NOT IN (
    SELECT GavahiID 
    FROM  dbo.AsnadMaliDetail ad 
    GROUP BY GavahiID 
    HAVING SUM (MablaghMoredEstefade) >= (
     SELECT mablagh 
     FROM dbo.Gavahi g 
     WHERE g.id = ad.GavahiID 
    ) 
) 
+1

可以請你改進格式嗎?到目前爲止你有什麼? – rexcfnghk

+1

請研究linq並嘗試做一些事情。然後如果你不能這樣做,那就問你的代碼。這對你更好。 –

回答

0

正如在評論中指出,這是更好地研究如何使用LINQ,而不是在SQL思維,然後試圖找到一個合適的翻譯操縱套。微軟試圖爲LINQ方法使用SQLish名稱,但事實是它們並不相似。

下面的LINQ查詢做什麼,你在SQL表示,假設GavahiId是Gavahi.Id外鍵:

var mablaghs = AsnadMaliDetails 
     .GroupBy(x => x.Gavahi) 
     .Where(g => g.Sum(y => y.MablaghMoredEstefade) < g.Key.Mablagh) 
     .Select(x => x.Key); 

注意,反相的MablaghMoredEstefade的總和的條件下,允許選擇直接加密(Gavahi),而不是在其他地方與主鍵NOT IN雜耍。

如果您是LINQ的新手,但您的流利SQL,我建議您嘗試LINQPad,它允許您一眼看到生成的SQL。雖然免費版不包括自動完成功能。