ef實現一次查詢多個聚合函數的字段


想用ef來寫一個統計字段的語句,如下所示

select sum(price) as price_total, sum(amount) as amount_total from table1 

發現似乎實現不了,ef只能 dbContext.Table.Sum(e=>e.price);dbContext.Table.Sum(e=>e.amount)這樣一個一個查,沒辦法一次查詢多個聚合函數字段

經過我的研究后,我發現可以曲線救國。

dbContext.Table.GroupBy(e => 1).
                Select(g => new
                {
                    price_total:g.Sum(e => e.Price),
                    amount_total:g.Sum(e => e.Amount)
                }).SingleOrDefault();

生成的sql語句如下,還算可以。

SELECT SUM(`t`.`amount`) AS `remain`, SUM(`t`.`price`) AS `price`
FROM (
    SELECT `e`.*, 1 AS `Key`
    FROM `it_asset` AS `e`
) AS `t`
GROUP BY `t`.`Key`
LIMIT 2

還有一個需要注意的點,如果你需要Sum(amount1-amount2)這樣的話,在GroupBy里面千萬不能這樣寫 Sum(e=>e.amount1-e.amount2),得這樣寫Sum(e=>amount1)-Sum(e=>e.amount2)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM