繁体   English   中英

将SUM / CASE WHEN / GROUP BY SQL查询转换为LINQ

[英]Convert SUM / CASE WHEN / GROUP BY SQL query into 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 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),

         });

我还将使用与投影(选择)中的group不同的变量名称,因为它是上下文关键字(带有查询表达式)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM