gpt4 book ai didi

c# - Linq 与 Transact Sql 分组

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:06 25 4
gpt4 key购买 nike

我有这个 SQL 查询

select GrupoEmpaque,NumIdConceptoEmpaque,sum(NumCantidadEmpaques) 
from Movimientos_Pedidos
where StrIdDocumento = '009000PV00000000000000599' and (GrupoEmpaque is null or GrupoEmpaque = 0 )
group by GrupoEmpaque , NumIdConceptoEmpaque

**It Returns:**

NULL 338 25

在另一边我有这个 Linq,Pedido 已经只有 '009000PV00000000000000599' 数据

var EmpaquesItemUnico = Pedido.Movimientos_Pedidos
.GroupBy(x => x.NumIdConceptoEmpaque)
.Select(x => new { GrupoEmpaque = x.FirstOrDefault().GrupoEmpaque, TipoEmpaque = x.FirstOrDefault().Merlin_ConceptosFacturacionEmpaque, Cantidad = x.Sum(y => y.NumCantidadEmpaques) })
.Where(x => x.GrupoEmpaque == 0 || x.GrupoEmpaque == null);

But now the results are
NULL 338 28

现在我的问题是:

为什么 TSQL 返回 25 而 Linq 返回 28?如何让这些句子返回相同的结果?

最佳答案

在投影之前你必须先过滤结果,你的t-sql和linq的groupby语句是不一样的:

var EmpaquesItemUnico = Pedido.Movimientos_Pedidos
.GroupBy(x => new
{
NumIdConceptoEmpaque =x.NumIdConceptoEmpaque,
GrupoEmpaque = x.GrupoEmpaque
}
)
.Where(x => x.Key.GrupoEmpaque == 0 || x.Key.GrupoEmpaque == null)
// now project here
.Select(x=> new
{
NumIdConceptoEmpaque = x.Key.NumIdConceptoEmpaque,
GrupoEmpaque = x.Key.GrupoEmpaque,
Sum = x.Sum(y => y.NumCantidadEmpaques)
});

关于c# - Linq 与 Transact Sql 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36084590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com