Linq C#linq按查询分组结果不同的SQL查询

时间:2019-03-04 17:30:11

标签: c# .net sql-server linq

这是我在这里的第一篇文章。感谢您能给我的所有帮助。

现在我正在尝试使用Linq进行查询,但我注意到结果是错误的。我对数据库中的表使用SQL进行了相同的查询,结果略有不同。

这是SQL查询

select [Categoria_H], count(*) as conteo
FROM TR_Movimientos
WHERE [TipoPago_H] <> 'Evasor' 
AND [TipoCliente_H] <> 'Evasor' 
AND [TipoPago_H] <> 'Exento'
group by [Categoria_H]

这是Linq查询(2个版本)

第一

var qTraficoXCategoria = from reg in registrosDiarios 
where 
   reg.TipoPago_H != GlobalParams.TR_Tipo_Pago_Homologado_Evasor &&
   reg.TipoPago_H != GlobalParams.TR_Tipo_Pago_Homologado_Exento &&
   reg.TipoCliente_H != GlobalParams.TR_Tipo_Cliente_Homologado_Evasor
group reg by reg.Categoria_H into Agrupacion
select new
{ 
   CodigoCategoria = Agrupacion.Key,
   Trafico = Agrupacion.Count()
};

第二

var qTraficoXCategoriaTest1 = registrosDiarios.Where(
q =>( (q.TipoPago_H != GlobalParams.TR_Tipo_Pago_Homologado_Evasor)
&& (q.TipoCliente_H != GlobalParams.TR_Tipo_Cliente_Homologado_Evasor)
&& (q.TipoPago_H != GlobalParams.TR_Tipo_Pago_Homologado_Exento) ))
.GroupBy(o => o.Categoria_H)
.Select(g => new { CodigoCategoria = g.Key, Trafico = g.Count() });

SQL查询的结果是

╔══════════╦═══════╗
║ Category ║ Count ║
╠══════════╬═══════╣
║ C1       ║  5269 ║
║ C2       ║    82 ║
║ C3       ║   106 ║
║ C4       ║    41 ║
║ C5       ║    47 ║
║ C6       ║    85 ║
║ CE_EG    ║     5 ║
║ CE_IE    ║     2 ║
╚══════════╩═══════╝

这是linq查询中的结果

╔══════════╦═══════╗
║ Category ║ Count ║
╠══════════╬═══════╣
║ C1       ║  5268 ║ * Error
║ C2       ║    82 ║
║ C3       ║   106 ║
║ C4       ║    41 ║
║ C5       ║    47 ║
║ C6       ║    84 ║ * Error
║ CE_EG    ║     5 ║
║ CE_IE    ║     2 ║
╚══════════╩═══════╝

linq运行时,类别C1和C6计数错误。

我感谢能帮助我解决此错误的任何想法或贡献。

0 个答案:

没有答案