C# Linq不会返回正确的结果

C# Linq不会返回正确的结果,c#,linq,C#,Linq,我需要用linq查询检索一个百分比,但它不起作用,我尝试了以下不同的东西 var format = "dd/MM/yyyy"; var actualTime = DateTime.ParseExact(DateTime.Today.ToString(format, CultureInfo.InvariantCulture), format, CultureInfo.InvariantCulture); List<RelacionEjecucionPendientes> inici

我需要用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();
var format=“dd/MM/yyyy”;
var actualTime=DateTime.ParseExact(DateTime.Today.ToString(format,CultureInfo.InvariantCulture),format,CultureInfo.InvariantCulture);
列表INIATIVASEJECUCIONPENDIENTESES=活动
.GroupBy(cl=>cl.iniciativaName)
.选择(cl=>新关系
{
Nombre=cl.键,
ATiempoEjecucionCantidad=cl.Count(c=>c.estado!=“No-Iniciada”&(Convert.ToDateTime(c.fechavenciiento.Day-actualTime.Day)>=0),
ATiempoEjecucionPorcentaje=
((cl.Count(c=>c.estado!=“No-Iniciada”&&Convert.ToDateTime(c.fechavenciiento).Day-实际时间.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”&&(转换为日期时间(c.fechavenciiento).Day-实际时间.Day)<0),
desfazadasejecucionprocentaje=String.Format(“{0:0.00}”),
((cl.Count(c=>c.estado!=“No-Iniciada”&&&((Convert.ToDateTime(c.fechavenciiento.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),
atiempopendientesporentaje=
((cl.Count(c=>c.estado==“No-Iniciada”&&((Convert.ToDateTime(c.fechaInicio)-实际时间).Days>=0))/
(cl.Count(c=>c.estado==“No-Iniciada”)!=0?cl.Count(c=>c.estado==“No-Iniciada”):1)
* 100,
desfazadaspendientedscantidad=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
德法扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎 Atienmpopendientesporcentaje
Desfazadaspendientaje

但这似乎很管用:

阿蒂恩普耶库西翁坎蒂达德
Desfazaesajecucioncantidad
ATiempoPendientesCantidad

desfazadaspendientedscantidad

看起来像整数除法问题。将其中一个数字强制转换为双精度,使其生效:

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,