繁体   English   中英

Math.Round() - LINQ查询

[英]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 completedint ,因此(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM