Linq没有返回正确的结果
本文关键字:结果 返回 Linq | 更新日期: 2023-09-27 18:11:40
我需要用linq查询检索百分比,但它不起作用,我尝试过不同的东西如下
var format = "dd/MM/yyyy";
var actualTime = DateTime.ParseExact(DateTime.Today.ToString(format, CultureInfo.InvariantCulture), format, CultureInfo.InvariantCulture);
List<RelacionEjecucionPendientes> iniciativasEjecucionPendienteses = actividades
.GroupBy(cl => cl.iniciativaName)
.Select(cl => new RelacionEjecucionPendientes
{
Nombre = cl.Key,
ATiempoEjecucionCantidad = cl.Count(c => c.estado != "No Iniciada" && (Convert.ToDateTime(c.fechaVencimiento).Day - actualTime.Day) >= 0),
ATiempoEjecucionPorcentaje =
((cl.Count(c => c.estado != "No Iniciada" && Convert.ToDateTime(c.fechaVencimiento).Day - actualTime.Day >= 0) /
(cl.Count(c => c.estado != "No Iniciada") != 0 ? cl.Count(c => c.estado != "No Iniciada") : 1)))
* 100,
DesfazadasEjecucionCantidad = cl.Count(c => c.estado != "No Iniciada" && (Convert.ToDateTime(c.fechaVencimiento).Day - actualTime.Day) < 0),
DesfazadasEjecucionPorcentaje = String.Format("{0:0.00}",
((cl.Count(c => c.estado != "No Iniciada" && ((Convert.ToDateTime(c.fechaVencimiento).Day - actualTime.Day) < 0)) /
(cl.Count(c => c.estado != "No Iniciada") != 0 ? cl.Count(c => c.estado != "No Iniciada") : 1)))
* 100),
ATiempoPendientesCantidad = cl.Count(c => c.estado == "No Iniciada" && (Convert.ToDateTime(c.fechaInicio).Day - actualTime.Day) >= 0),
ATiempoPendientesPorcentaje =
((cl.Count(c => c.estado == "No Iniciada" && ((Convert.ToDateTime(c.fechaInicio) - actualTime).Days >= 0)) /
(cl.Count(c => c.estado == "No Iniciada") != 0 ? cl.Count(c => c.estado == "No Iniciada") : 1)))
* 100,
DesfazadasPendientesCantidad = cl.Count(c => c.estado == "No Iniciada" && (Convert.ToDateTime(c.fechaInicio).Day - actualTime.Day) < 0),
DesfazadasPendientesPorcentaje = String.Format("{0:0.00}",
((cl.Count(c => c.estado == "No Iniciada" && (Convert.ToDateTime(c.fechaInicio).Day - actualTime.Day) < 0) /
(cl.Count(c => c.estado == "No Iniciada") != 0 ? cl.Count(c => c.estado == "No Iniciada") : 1)))
* 100)
}).ToList();
任何一个百分比都可以正常工作
ATiempoEjecucionPorcentaje
DesfazadasEjecucionPorcentaje
ATiempoPendientesPorcentaje
DesfazadasPendientesPorcentaje
但这似乎工作良好:
ATiempoEjecucionCantidad
DesfazadasEjecucionCantidad
ATiempoPendientesCantidad
DesfazadasPendientesCantidad
看起来像是整数除法问题。将其中一个数字转换为double
以使其工作:
ATiempoEjecucionPorcentaje =
(((double)cl.Count(c => c.estado != "No Iniciada" && Convert.ToDateTime(c.fechaVencimiento).Day - actualTime.Day >= 0) /
(cl.Count(c => c.estado != "No Iniciada") != 0 ? cl.Count(c => c.estado != "No Iniciada") : 1)))
* 100,