LINQ:如何检查类型内的零除法器?

发布于 2024-11-03 10:10:13 字数 568 浏览 0 评论 0原文

有没有一种方法(不使用 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();

Is there a way (without using a try catch) to check for zero in ps.sum below so it doesn't throw a divide by zero error?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白首有我共你 2024-11-10 10:10:13
PTPcntOfUT = ps.sum != 0 ? Math.Round((g.CurrVal/ps.sum)*100) : valueIfSumIsZero
PTPcntOfUT = ps.sum != 0 ? Math.Round((g.CurrVal/ps.sum)*100) : valueIfSumIsZero
海风掠过北极光 2024-11-10 10:10:13

怎么样:

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

How about:

(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)
              }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文