我在vb.net网站下面一行:linq.sum被四舍五入
totCost = outstandingTimesheet.ClaimLines.Sum(Function(x) x.TotalLineCost And x.Queried = False)
总和带来圆润,虽然,我不能,为什么工作了......
任何想法?
我不相信它只是格式化输出更是什么总和内正在进行的情况。
这是正确的吗?
我在vb.net网站下面一行:linq.sum被四舍五入
totCost = outstandingTimesheet.ClaimLines.Sum(Function(x) x.TotalLineCost And x.Queried = False)
总和带来圆润,虽然,我不能,为什么工作了......
任何想法?
我不相信它只是格式化输出更是什么总和内正在进行的情况。
这是正确的吗?
你也许混淆Where
和Sum
?我建议:
outstandingTimesheet.ClaimLines.Where(x => !x.Queried).Sum(x => x.TotalLineCost);
您总结了按位与操作的结果:
outstandingTimesheet.ClaimLines.Sum(x => (x.TotalLineCost & x.Queried));
然而,你的结果应该是完全错误的,不只是四舍五入。这就是所有的C#,因为我在VB.NET中会犯严重错误。对不起。
在VB.NET(西蒙):
totCost = outstandingTimesheet.ClaimLines.Where(Function(x) x.Queried = False).Sum(Function(x) x.TotalLineCost)
难道是可能的,你是存储散发出来作为一个双,一个int内的结果呢? 这是可能的,如果您还没有激活您的项目属性Option strict
。 这会导致您的总和的结果四舍五入。
或者你可以只错在你的LINQ也,如木渎
编辑声明:为了澄清Option strict
:如果它不是启用,隐式转换将不进行警告或错误通知来完成的,所以它可以给int一个双精度值,而不会告诉你你正在这样做。
'ClaimLines'的类型是什么?什么是实际结果?预期的结果是什么? – 2012-03-08 09:47:44
你总结了一堆布尔 – 2012-03-08 11:28:09