2011-04-27 2 views
0

아래의 ps.sum에서 0을 확인하는 방법이 있습니까 (try catch를 사용하지 않고)? 0으로 나누기 오류가 발생하지 않습니까?LINQ : 유형 내 제로 디바이더를 확인하는 방법은 무엇입니까?

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
PTPcntOfUT = ps.sum != 0 ? Math.Round((g.CurrVal/ps.sum)*100) : valueIfSumIsZero 
0

방법에 대해 :

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