将 sql 转换为 linq(连接和分组依据)

Zhongwenslayer

我正在将旧的 webforms 应用程序转换为 asp.net mvc,并且在将我的一个 sql 语句转换为 linq 时遇到问题。特别是,我需要有关分组和连接的帮助。我通过查看此处的各种示例尝试了多种方法,但没有一种方法对我有用。

SELECT cp.PartNumber, cp.PartDescription, PFEP.PFEPTx, PFEP.KBQty, 
TX_QOH.QOH, TX_ReworkQOH.Rework_QOH as Rework, SUM(ShippingInput.Qty) AS 
'Ocean'
FROM CustomerParts as cp 

LEFT JOIN TX_QOH 
ON cp.PartNumber = TX_QOH.PN

LEFT JOIN TX_ReworkQOH 
ON cp.PartNumber = TX_ReworkQOH.PN

LEFT JOIN ShippingInput 
ON cp.PartNumber = ShippingInput.PN AND  ShippingInput.Status <> 'Received' 

LEFT JOIN PFEP
ON cp.PartNumber= PFEP.PN

WHERE cp.PartType = 'Actuator Part' AND cp.Division = 'Bayne' AND cp.Active 
= 'Yes' AND TX_QOH.QOH = '0'

Group By cp.PartNumber, TX_QOH.QOH, TX_ReworkQOH.Rework_QOH, 
cp.PartDescription, PFEP.PFEPTx, PFEP.KBQty
Order By cp.PartNumber ASC
Zhongwenslayer

LINQ版本

var queryNew = (from cp in db.MasterPartLists
            join tx in db.TxQohs on cp.CustomerPn equals tx.Pn into jTxQoh
            from tx in jTxQoh.DefaultIfEmpty()
            join c in db.ShipIns.Where(r => r.ShipInStatusId != 3) on cp.CustomerPn equals c.Pn into jShipIns
            from c in jShipIns.DefaultIfEmpty()
            join d in db.Pfeps on cp.CustomerPn equals d.CustomerPn into jPfeps
            from d in jPfeps.DefaultIfEmpty()
            where d.PartTypeId == parttype && cp.CustomerDivisionId == division && cp.ActivePartId == 1 && tx.Qoh == 0
            group new {cp, d, tx, c} by new {cp.CustomerPn, tx.Qoh, cp.PartDescription, d.PfepTx, d.KbQty}
            into gcp
            orderby gcp.Key.CustomerPn
            select new
            {
                gcp.Key.CustomerPn,
                gcp.Key.PartDescription,
                gcp.Key.PfepTx,
                gcp.Key.KbQty,
                gcp.Key.Qoh,
                Ocean = (int?)gcp.Sum(r => r.c.Qty)
            }); 

SQL 版本

var queryNew = "SELECT cp.CustomerPn, cp.PartDescription, Pfeps.PFEPTx, Pfeps.KBQty, TxQohs.Qoh, SUM(ShipIns.Qty) AS 'Ocean' "
                          + "FROM MasterPartLists as cp "
                          + "LEFT JOIN TxQohs "
                          + "ON cp.CustomerPn = TxQohs.Pn AND TxQohs.Qoh = '0' "
                          + "LEFT JOIN ShipIns "
                          + "ON cp.CustomerPn = ShipIns.Pn AND ShipIns.ShipStatusId <> '3' "
                          + "LEFT JOIN Pfep "
                          + "ON cp.CustomerPn = Pfeps.CustomerPn "
                          + "WHERE cp.PartTypeId = parttype AND cp.CustomerDivisionId = division AND cp.ActivePartId = '1' "
                          + "Group By cp.CustomerPn, TxQohs.Qoh, cp.PartDescription, Pfeps.PfepTx, Pfeps.KbQty "
                          + "Order By cp.CustomerPn ASC "; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将包含where,分组依据,求和且必须Linq的MySQL语句转换为Sql

来自分类Dev

将SQL转换为Linq-To-SQL

来自分类Dev

将SQL分组查询转换为LINQ查询

来自分类Dev

将SQL转换为EF Linq

来自分类Dev

将SQL语句转换为Linq

来自分类Dev

将sql语句转换为linq MVC

来自分类Dev

快速帮助:将SQL转换为LINQ

来自分类Dev

使用group by将SQL转换为LINQ

来自分类Dev

将SQL查询转换为LINQ查询

来自分类Dev

将SQL查询转换为LINQ

来自分类Dev

使用MAX将SQL转换为LINQ

来自分类Dev

如何将SQL转换为Linq

来自分类Dev

将SQL查询转换为LINQ语句

来自分类Dev

将SQL(complex)转换为LINQ

来自分类Dev

将 sql 命令转换为 LINQ

来自分类Dev

将SQL中的条件连接转换为Linq

来自分类Dev

LINQ:将SQL WITH子句转换为LINQ和实体框架

来自分类Dev

LINQ:将SQL WITH子句转换为LINQ和实体框架

来自分类Dev

使用groupby,sum和count将SQL转换为Linq

来自分类Dev

使用sum和group by将sql查询转换为linq

来自分类Dev

使用groupby,sum和count将SQL转换为Linq

来自分类Dev

使用案例将SQL group by和order by转换为Linq

来自分类Dev

如何将带有分组依据、聚合和连接的 SQL 查询转换为实体框架查询?

来自分类Dev

将linq转换为sql查询,将linq转换为实体

来自分类Dev

Polybase将sql转换为ansi sql进行sybase连接

来自分类Dev

将T-Sql的Group转换为Linq转换为Sql

来自分类Dev

如何将sql内部联接查询转换为linq转换为sql查询并转换为列表

来自分类Dev

EF Linq无法将SQL查询转换为正确的linq

来自分类Dev

将旧 SQL 外连接 *=, =* 转换为 ANSI