在实体中使用 SUM() 翻译 SQL 语句
Translate SQL statement with SUM() in Entity
我尝试翻译这段 SQL 代码:
SELECT w.Id, w.LastName, w.FirstName, SUM(d.Price*dt.Number) AS somme
FROM Waiter w
INNER JOIN Client c on w.Id = c.WaiterId
INNER JOIN DisheOnTable dt on c.Id = dt.ClientId
INNER JOIN Dishe d on dt.DisheId = d.Id
GROUP BY w.Id, w.LastName, w.FirstName
ORDER BY somme DESC;
在 entity framework.
我试过这样的东西
var query2 = (from w in db.Waiter
join c in db.Client on w.Id equals c.WaiterId
join dt in db.DisheOnTable on c.Id equals dt.ClientId
join d in db.Dishe on dt.DisheId equals d.Id
group w by new { w.Id, w.LastName, w.FirstName } into g
//orderby g.Select() descending
select new
{
id = g.Key.Id,
lastname = g.Key.LastName,
firstname = g.Key.FirstName,
total = g.Sum(q => q.)
});
但我的总和不起作用(经过多次研究和尝试)而且我不知道如何乘以我的变量。
PS : SQL 语句效果很好,我试过了。
谢谢大家的帮助! :)
您需要对 dish
和 DishOnTable
别名进行分组,因为 Price
在 Dish
中,而 Number
在 DishOnTable
中:
group new{ d,dt} by new {w.Id, w.LastName, w.FirstName} into g
现在对您想要的列求和
select new {
id = g.Key.Id,
lastname = g.Key.LastName,
firstname = g.Key.FirstName,
total = g.Sum(q => q.d.Price * q.dt.Number)
}).OrderBy(x=>x.total)
我尝试翻译这段 SQL 代码:
SELECT w.Id, w.LastName, w.FirstName, SUM(d.Price*dt.Number) AS somme
FROM Waiter w
INNER JOIN Client c on w.Id = c.WaiterId
INNER JOIN DisheOnTable dt on c.Id = dt.ClientId
INNER JOIN Dishe d on dt.DisheId = d.Id
GROUP BY w.Id, w.LastName, w.FirstName
ORDER BY somme DESC;
在 entity framework.
我试过这样的东西
var query2 = (from w in db.Waiter
join c in db.Client on w.Id equals c.WaiterId
join dt in db.DisheOnTable on c.Id equals dt.ClientId
join d in db.Dishe on dt.DisheId equals d.Id
group w by new { w.Id, w.LastName, w.FirstName } into g
//orderby g.Select() descending
select new
{
id = g.Key.Id,
lastname = g.Key.LastName,
firstname = g.Key.FirstName,
total = g.Sum(q => q.)
});
但我的总和不起作用(经过多次研究和尝试)而且我不知道如何乘以我的变量。
PS : SQL 语句效果很好,我试过了。
谢谢大家的帮助! :)
您需要对 dish
和 DishOnTable
别名进行分组,因为 Price
在 Dish
中,而 Number
在 DishOnTable
中:
group new{ d,dt} by new {w.Id, w.LastName, w.FirstName} into g
现在对您想要的列求和
select new {
id = g.Key.Id,
lastname = g.Key.LastName,
firstname = g.Key.FirstName,
total = g.Sum(q => q.d.Price * q.dt.Number)
}).OrderBy(x=>x.total)