我正在运行LINQ查询,该查询使用本地"let"变量来计算本地值,以与传递给查询的参数进行比较.
我有以下查询:
Items = from lead in Items
let total = lead.NurtureActions.Count(q => !q.Deleted)
let completed = lead.NurtureActions.Count(nurtureAction => nurtureAction.Completed && !nurtureAction.Deleted)
let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
where
total>0 &&
percentage == progress
select lead;
Run Code Online (Sandbox Code Playgroud)
上面非常重要的部分是以下行:
let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
Run Code Online (Sandbox Code Playgroud)
正如您在我的查询中看到的那样,我将该查询的结果与progress传递给我的函数进行比较.
例如:我可能会传入值8,因此progress会有值8.但计算的percentage最初可能是8.223,但我需要将其舍入到8.
我相信我这样做是正确的,但由于某种原因,某些东西不能正常工作.
什么可能会抛出四舍五入的想法?我也尝试了AwayFromZero舍入选项,但这也不起作用.
编辑对于那些要求更多信息的人,我不确定它的计算价值.我没有调试LINQ查询的经验,也不知道从哪里开始查找该值是什么.如果我知道如何获得它,我会提供它.
随机猜测:total并且completed是ints,因此(completed/total)导致截断值.截断的值乘以100,然后转换为double.
我猜这会在某些情况下产生意想不到的结果,如果你期望(completed/total)返回a double.
固定:
let total = (double)lead.NurtureActions.Count(...)
let completed = (double)lead.NurtureActions.Count(...)
let percentage = Math.Round((completed/total)*100, ...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7495 次 |
| 最近记录: |