在VB.Net中使用LINQ to dataset的精度问题 - 双重无效转换异常

时间:2009-10-14 17:05:41

标签: vb.net linq-to-dataset

我在使用LINQ to dataset查询时遇到了一些麻烦。我有一个问题,数据作为double返回到数据集,可能为null。当我将数据输入LINQ查询时,它会截断到一个小数位。我想知道是否有人能告诉我设置精度的最佳方法,以便它保留两位小数?我试过用'Double?'但是当我这样做时,我得到一个无效的强制转换异常。以下是我的L2D查询示例:

Dim query = _
From bb In bbdata.AsEnumerable(), _
        ab In abdata.AsEnumerable() _
    Where (bb.Field(Of String)("bbID").ToUpper.Trim() = _
          ab.Field(Of String)("abID").ToUpper.Trim()) _
Order By _
            bb.Field(Of String)("Sequence") Descending, _
            bb.Field(Of String)("Name") Ascending, _
            bb.Field(Of String)("bbID").ToUpper.Trim() Ascending, _
            ab.Field(Of Decimal?)("TWO_DECIMAL_DIGIT_DOUBLE") Descending _
Select New With _
{ _
    .bbID = bb.Field(Of String)("bbID"), _
    .Weight = ab.Field(Of Decimal?)("TWO_DECIMAL_DIGIT_DOUBLE"), _
    .Sequence = bb.Field(Of String)("Sequence"), _
    .Name = bb.Field(Of String)("Name"), _
}

当我运行它时,Double被截断为一个小数,并且需要具有2个小数位的精度。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

也许是因为Weight属性以小数点后一位的精度对值进行舍入?我不知道还有什么可能导致这种行为...