LINQ: ¿Cómo verificar el tipo de divisor cero dentro del tipo?
Pregunta
¿Hay alguna manera (sin usar una captura de intento) para verificar a cero en Ps.Sum a continuación para que no arroje una división por error cero?
var procVsTotPkg = unitGroup.Join(procSums, g => new
{
g.DeptID,
g.UnitLoc,
g.Proc
},
ps => new
{
DeptID = ps.key.deptID,
UnitLoc = ps.key.unitLoc,
Proc = ps.key.procName
}, (g, ps) => new procVSUnitTotalJoin
{
dept = g.DeptID,
uloc = g.UnitLoc,
procName = g.Proc,
unitName = g.Unit,
unitTotal = g.CurrVal,
procTotal = ps.sum,
PTPcntOfUT = Math.Round((g.CurrVal / ps.sum) * 100, 2)
}).Single();
Solución
PTPcntOfUT = ps.sum != 0 ? Math.Round((g.CurrVal/ps.sum)*100) : valueIfSumIsZero
Otros consejos
Qué tal si:
(g, ps) => new procVSUnitTotalJoin
{
dept = g.DeptID,
uloc = g.UnitLoc,
procName = g.Proc,
unitName = g.Unit,
unitTotal = g.CurrVal,
procTotal = ps.sum,
PTPcntOfUT = Math.Round((g.CurrVal / (ps.sum == 0 ? 1:ps.sum)) * 100, 2)
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow