我有這張桌子
CREATE TABLE Receipt
(
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
idcustom INT NULL,
idstaff INT NULL,
payat DATETIME NOT NULL,
totalINT NOT NULL
)
我有一個 SQL 查詢:
SELECT
CAST(payat AS date), SUM(total)
FROM
Receipt
WHERE
CAST(payat AS date) = '2021-11-13'
GROUP BY
CAST(payat AS date)
如何在物體框架中選擇此查詢?
uj5u.com熱心網友回復:
它應該是這樣的
var result = dbContext.Receipt
.Select(p=> new {
payat = p.payat.Date,
total = p.total
})
.GroupBy(p => p.payat )
.Select(p => new {
payat = p.Key,
total = p.Sum(q => q.total)
}).ToList();
uj5u.com熱心網友回復:
EF 中的確切等效項是
var result =
from r in context.Receipt
where payat.Date = new DateTime(2013, 11, 13)
group r by r.payat.Date into g
select new {
date = g.Key,
total = g.Sum(r => r.total),
};
然而,一個更有效的解決方案出現了(對于等效的 SQL 也是如此)
var result =
new {
date = new DateTime(2013, 11, 13),
total =
(from r in context.Receipt
where payat >= new DateTime(2013, 11, 13)
&& payat < new DateTime(2013, 11, 14)
select r.total
).Sum(),
};
換句話說,不要在日期上使用函式,而是使用開始和結束日期范圍進行比較。沒有必要在這里分組,因為我們只有一個約會。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361966.html
