这是我在这里的第一篇文章。感谢您能给我的所有帮助。
现在我正在尝试使用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计数错误。
我感谢能帮助我解决此错误的任何想法或贡献。