操作数数据类型float对于模运算符无效,使用LINQ将float转换为int



我试图使用LINQ从Sql获取数据,并做一些操作,例如当值大于500时将我的数字四舍五入到最接近1000。我有列costreproductionnew(float,null)和buildinoverride。

如果buildingoveride价值应该考虑其他costreproductionNew

我无法执行操作,因为我得到内部异常'操作数数据类型float对模运算符无效'

allBuildings.Sum(b => (b.BuildingOverride.HasValue && b.BuildingOverride > 0)
? b.BuildingOverride.Value
: (b.CostReproductionNew.HasValue ? (Math.Round(b.CostReproductionNew.Value) > 500)
? (Math.Round(b.CostReproductionNew.Value) % 1000 >= 500
? Math.Round(b.CostReproductionNew.Value) + 1000 - Math.Round(b.CostReproductionNew.Value) % 1000
: Math.Round(b.CostReproductionNew.Value) - Math.Round(b.CostReproductionNew.Value) % 1000)
: 500
: 0)

谁能帮助我如何从float转换到int这里?

简单版本中四舍五入到1000的公式(为了更好的可读性)

x = x % 1000>= 500 ?X + 1000 - X % 1000;

b.CostReplacementNew.HasValue (((int)Math.Round(b.ContentCostReproductionNew.Value)) > 500)

在它帮助我解决

之前添加(int)

相关内容

  • 没有找到相关文章

最新更新