[英]Math.Round() - LINQ Query
我正在运行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;
上面非常重要的部分是以下行:
let percentage = Math.Round((Double)((completed/total)*100),0,MidpointRounding.ToEven)
正如您在我的查询中看到的那样,我将该查询的结果与progress
进行比较,该结果将传递给我的函数。
例如:我可能传入值8
,因此progress
的值为8
。 但计算的percentage
最初可能是8.223
,但我需要将其舍入到8
。
我相信我这样做是正确的,但由于某种原因,某些东西不能正常工作。
什么可能会抛出四舍五入的想法? 我也尝试过AwayFromZero
选项进行舍入,但这也不起作用。
编辑对于那些要求更多信息的人,我不确定它的计算价值。 我没有调试LINQ查询的经验,也不知道从哪里开始查找该值是什么。 如果我知道如何获得它,我会提供它。
随机猜测: total
completed
是int
,因此(completed/total)
会产生截断值。 截断的值乘以100, 然后转换为double
。
我猜这会在某些情况下产生意外结果,如果你期望(completed/total)
返回一个double
。
固定:
let total = (double)lead.NurtureActions.Count(...)
let completed = (double)lead.NurtureActions.Count(...)
let percentage = Math.Round((completed/total)*100, ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.