0

LINQ to dataset クエリで問題が発生しています。データが double としてデータセットに返され、null になる可能性があるという問題があります。LINQ クエリにデータを取得すると、小数点以下 1 桁に切り捨てられます。小数点以下2桁を保持するように精度を設定する最良の方法を誰かが教えてくれるかどうか疑問に思っていますか? 「ダブル?」を使ってみた しかし、これを行うと、無効なキャスト例外が発生します。これが私の 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 は小数点以下 1 桁に切り捨てられ、小数点以下 2 桁の精度である必要があります。どんな助けでも大歓迎です。

4

1 に答える 1

0

おそらく、Weight プロパティが小数点以下 1 桁の精度で値を丸めるためでしょうか? 他に何がこの動作を引き起こすのかわかりません...

于 2009-10-14T18:05:38.527 に答える