C# 通过SQL查询将SUM/CASE WHEN/GROUP转换为LINQ
我很难将我的简单SQL查询转换为LINQC# 通过SQL查询将SUM/CASE WHEN/GROUP转换为LINQ,c#,sql,linq,C#,Sql,Linq,我很难将我的简单SQL查询转换为LINQ SELECT Id ,Location ,SUM( CASE WHEN TransactionType = 'Out' THEN [Quantity] * -1 ELSE Quantity END) AS StockQuantity FROM Transactions WHERE Id = 123 GROUP BY Id, Location 这是我最好的错误尝试 var resu
SELECT Id
,Location
,SUM( CASE
WHEN TransactionType = 'Out' THEN [Quantity] * -1
ELSE Quantity
END) AS StockQuantity
FROM Transactions
WHERE Id = 123
GROUP BY Id, Location
这是我最好的错误尝试
var result = db.Transactions
.Where(r => r.Id == 123)
.GroupBy(r => r.Id, r => r.Location)
.Select(group => new
{
Id = r.Id,
Location = r.Location,
Quantity = sum(r.TransactionType == 2 ? r.Quantity * -1 : r.Quantity),
});
提前感谢您没有使用分组值。您的查询应该如下所示:
var result = db.Transactions
.Where(r => r.Id == 123)
.GroupBy(r => new { r.Id, r.Location} )
.Select(grp => new
{
Id = grp.Key.Id,
Location = grp.Key.Location,
Quantity = grp.Sum(t=> t.TransactionType == 2 ? t.Quantity * -1 : t.Quantity),
});
在投影(Select)中,我也会使用与group
不同的变量名,因为它是一个上下文关键字(带有查询表达式)如果.GroupBy(…)
是.GroupBy(r=>new{r.Id,r.Location})
?