2016-09-07 64 views
0

我在C#中有一個查詢,我需要通過此查詢對c.Same_invoice進行分組,並對分組的行中的列價格求和。Group By和Sum在LINQ查詢中加入

我知道如何做分組和總和,但我不知道我的情況下的解決方案,加入和大量的數據。

實際的代碼是:

var query = from c in snd.external_invoices.OrderByDescending(x => x.date) 
      join o in snd.invoices on c.idexternal_invoices equals o.id_external_invoice 
      select new{ 
       c.idexternal_invoices, 
       c.businessname, 
       o.number, 
       c.message, 
       c.price, 
       c.date, 
       c.iduser 
      }; 

感謝所有

+0

加入是一個非常,非常強烈的氣味。實體之間的關係應在其映射中指定。 ORM(例如EF)只會在需要時生成適當的連接*,並只加載最終數據。在這種情況下,你甚至不需要分組,因爲你返回所有的根對象。一個'c.Invoices.Sum(inv => inv.SomeField)'就足夠了 –

+0

我明白你在說什麼,但是我正在爲一家諮詢公司工作,客戶有一個實體框架項目但決定不添加映射到數據庫。我不允許更改數據庫或映射。我只能用我擁有的東西來工作。感謝您的回覆 –

+0

然後告訴他們他們必須修復他們的錯誤。無論如何,如果不知道你想要分組或總結什麼,就無法提供幫助。你會如何在SQL中編寫相同的語句? LINQ語句將是等效的。而客戶仍然有一個非常醜陋的錯誤 –

回答

2

您可以使用類似:

var query = from c in snd.external_invoices.OrderByDescending(x => x.date) 
      join o in snd.invoices on c.idexternal_invoices equals o.id_external_invoice into grouped 
      select new{ 
       Invoice =grouped.key, Price = grouped.Sum(x => x.Price)}; 
+0

我已經試過你的代碼,但c#不能識別分組點值 –

+0

分組點值是什麼意思? –

+0

對不起!在選擇新的我的LINQ語句中沒有任何值分組的第二部分加入。我在分組變量中只有第一部分 –