1

データベースの値を使用して減価償却額を計算し、グリッドに表示しようとしています。

テーブルには3つの列があります。Id、DepreciationRate、DateDepreciated。開始値を取得するために、別のテーブルからコストを引き出します。私の問題は、レートのみを使用して各減価償却を計算して表示する方法です。新しい値を保存しますが、減価償却は異なる日付で削除または追加される可能性があります。

元。10ドルのアイテムがあり、10%の減価償却費が追加されます。新しい値は$9です。それぞれ5%でさらに2つの減価償却を追加し、値を$8.12にします。次に、5%の減価償却の1つを削除して、値が$8.55と表示されるようにします。

グリッドの列の1つに、減価償却前の値が表示されます。

LINQで新しい値を計算する方法はありますか?多分骨材?

LINQtoSQLでVB.netを使用しています

4

1 に答える 1

2

私があなたのドリフトを取得した場合は、次のことを試してください:

Dim result = db.InitialCosts _
               .GroupJoin( _
                   db.Depreciations, _
                   cost => cost.ProductID, _
                   depr => depr.ProductID, _
                   (cost,g) => New With { _
                                          .OriginalCost = cost.Cost, _
                                          .DepreciatedCost = g.Aggregate( _
                                                               cost.Cost, _
                                                               (cost,rate) => cost * (1- rate.DepreciationRate)) _
                                        })

または、時間がかかる場合は、ローカルメモリで結合自体を実行してみてください。

Dim rawGroups = db.Depreciations _
                  .ToLookup(depr => depr.ProductID, depr => depr.DepreciationRate)
Dim result = db.InitialCosts _
               .Select( _
                  cost => New With { _
                                    .OriginalCost = cost.Cost, _
                                    .DepreciatedCost = rawGroups.Contains(cost.ProductID) ? _
                                       rawGroups[cost.ProductID].Aggregate( _
                                                                  cost.Cost, _
                                                                  (cost,rate) => cost * (1- rate)) _
                                       : cost.Cost _
                                   })
于 2012-11-08T18:37:37.193 に答える