LINQ: Как проверить делитель нуля внутри типа? - PullRequest
0 голосов
/ 28 апреля 2011

Есть ли способ (без использования try catch) проверить ноль в ps.sum ниже, чтобы он не выбрасывал ошибку деления на ноль?

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();

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011
PTPcntOfUT = ps.sum != 0 ? Math.Round((g.CurrVal/ps.sum)*100) : valueIfSumIsZero
0 голосов
/ 28 апреля 2011

Как насчет:

(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)
              }
...