我有以下表达式;
MyResult = userRecords.Exists(
r => ((r.userDataOne + r.userDataTwo) / r.userLimit ) > 0.6m);
问题是我偶尔会得到一个System.DivideByZeroException'当userLimit为0时。
目前我唯一能看到的是Try / Catch或If语句。我已经尝试过寻找一个可以处理lambda语句并处理0的解决方案,我是不是已经使用了多个' if'声明?或者是否有更好的方法来处理这些类型的异常?
答案 0 :(得分:4)
问题不在于userDataOne
或userDataTwo
。问题是userLimit
。
您可以尝试避免这样的记录:
userRecords.Where(r => r.userLimit != 0).Exists( ... )
或者像这样:
userRecords.Exists(r => r.userLimit != 0 && ((r.userDataOne + r.userDataTwo) / r.userLimit ) > 0.6m);